环境: 4, Xcode 8.2, iOS 10, and Swift 3.
是一个基于HTTP的网络请求库,适用于iOS和OSX,针对apple的基本网络请求库作了封装,简化网络请求的复杂逻辑 。
提供了/方法,JSON参数形式,序列化功能,以及等许多特性 。在本篇文章中,你可以学到通过实现基本的数据上传和下载 。
首先,下载基本的空项目:
这个项目名称叫做,当你完成了这个项目,会实现以下的效果:当你从照片库选择一张照片,并且上传到我们指定的第三方服务器,就可以实现照片的智能识别,包含照片所包含的标签,和图片的合成颜色:
文章插图
下载完项目,build运行后你可以看到下面的效果 。
文章插图
点击 Photo按钮,当前view的背景会换成你选择的图片的样子
的API
是一个图片识别平台,为开发者免费提供了图片的上传获取API,有兴趣可以看看平台的这个小项目 。://////.jpg
如果想使用,首页需要注册成为其平台的开发者,填下一下的表格即可
当填完后这个表格后,点击确定进入主页面,能看到这个页面
文章插图
注意 这个部分,在以后的网络请求中会有用到 。
这里是的文档详细使用说明,需要的可以看看 。
安装
创建环境,创建文件,如下
platform :ios, '10.0'inhibit_all_warnings!use_frameworks!target 'PhotoTagger' dopod 'Alamofire', '~> 4.2.0'end
然后在终端执行以下指令:
pod install
如果你的电脑上没有安装环境,查看这篇文章
关闭当前的项目,并且打开项目.. 运行后发现还开始的页面都一样,没有变化,下面开始正式进入网络请求的介绍部分 。
开始一个请求
分为三个部分,
:上传 files和,file 或data
:下载files或者重新开始一个已经开始的网络请求
,:每一个不含文件上传和下载的Http请求 。
上传 Files
打开.swift 并且引进头文件
import Alamofire
这样就可以使用提供的了
接着:添加一个到文件的最后面
// Networking callsextension ViewController {func upload(image: UIImage,progressCompletion: @escaping (_ percent: Float) -> Void,completion: @escaping (_ tags: [String], _ colors: [PhotoColor]) -> Void) {guard let imageData = http://www.kingceram.com/post/UIImageJPEGRepresentation(image, 0.5) else {print("Could not get JPEG representation of UIImage")return}}}
这一步上传我们本地的图片到的服务器,同时会返回给我们一个图片 。
然后,在r(_::)方法中的给赋值image时添加以下代码:
// 1takePictureButton.isHidden = trueprogressView.progress = 0.0progressView.isHidden = falseactivityIndicatorView.startAnimating()upload(image: image,progressCompletion: { [unowned self] percent in// 2self.progressView.setProgress(percent, animated: true)},completion: { [unowned self] tags, colors in// 3self.takePictureButton.isHidden = falseself.progressView.isHidden = trueself.activityIndicatorView.stopAnimating()self.tags = tagsself.colors = colors// 4self.performSegue(withIdentifier: "ShowResults", sender: self)})
所有的的请求都是异步的,这样就意味着UI的刷新也是异步的,下面介绍每一步的含义:
1. 隐藏上传按钮,并且展示上传的进度和 view
- 边的双连通分量 395 冗余路径
- 2023年是第几个世界狂犬病日 每年的几月几日是世界狂犬病预防日
- 【Shell 命令集合 扩展命令】Linux chgrp命令使用教程
- VPN是什么、类型、使用场景、工作原理
- 一个月饼有多少热量 月饼的热量有多高
- 世界狂犬病日是每年的几月几日 世界狂犬病日是几月几号
- ubuntu下安装HHVM
- 使用异步编程保证Koa的洋葱模型
- 什么叫厄尔尼诺天气 厄尔尼诺天气的形成原因
- Binomial Coefficient C#,二项式系数的七种算法与源代码