AFNetworking的简单使用,iOS开发准备

2019-09-15 22:26栏目:专项工作
TAG:

  • 顺便来个广告
  • 直接用代码演示了AFNetworking框架的基本用法
  • 利用AFN发送GET、POST请求、文件上传等
  • 本文以下代码测试的服务器是虚作的,如果真想在远程服务器测试,可以留言

iOS开发作为这几年移动互联网迅速发展的排头兵,和Android开发一直都是持续作为移动开发热门搜索的头两名(顺便纪念一下天国的Symbian和发展一直受阻的Windows Phone)。很多人都想参与到这个富有激情和美好未来的行业中来。但是参差不齐的水平和专业基础让很多人都感觉到了非常困难,尤其是iOS的硬件和软件要求之苛刻,一直都为小白开发者们所诟病。本文主要介绍的就是iOS开发需要的硬件和软件准备,以及Xcode(主要是Xcode 6)的界面简单介绍和工程创建的教程。

iOS开发者 群532084214 给大家提供一个交流技术 也可以聊天打屁的平台

1.1 硬件准备

很多iOS开发者喜欢用StoryBoard开发 实在是非常省心省事但是涉及到一个也没也相对有很多复杂的状态 拖出来的约束也会多到让人恶心

  • 全称是AFNetworking,流行框架,在iOS开发中,使用比较广泛
  • AFN的github地址

iOS作为苹果手机系统,那么开发iOS需要什么样的硬件呢?机智的苹果就在系统和软件上设立了iOS开发的门槛。iOS的开发首先需要OS X系统(曾用名Mac OS X)。那么OS X系统作为以FreeBSD这种类Unix框架的系统是不是和其他Unix系统一样可以简单的安装呢?答案是——不是,也是。

其实Xcode 帮我们提供了一些方便的容器来辅助开发如图

AFN发送GET请求, 直接上代码,注意看注释

  • AFHTTPSessionManager内部包装了NSURLSession
  • 不用在URL后面拼接参数,传入一个参数数据就可以了
  • 默认采用JSON解析了服务器响应的数据
- get{ // AFHTTPSessionManager内部包装了NSURLSession AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; NSDictionary *params = @{ @"username" : @"123", @"pwd" : @"123" }; [mgr GET:@"http://www.baidu.com/login" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"请求成功---%@", responseObject); } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"请求失败---%@", error); }];}

先按照“不是"来解释,如果你的电脑要装一个双系统,其中一个需要安装OS X或者Mac OS X,那么你会开启一道非常蛋疼的大门,那就是——黑苹果。安装黑苹果的血泪史,那我就不细说了。在我还是大二的那一年,在我的Lenovo B460上整整折腾了一个礼拜都是失败,反反复复重启数十次,后来查出来是硬件问题去联想售后更换主板之后成功安装,然而安装成功之后每过二十分钟就会五国Error一次的痛苦我就不详细说明了。如果你非要选择安装黑苹果,那么请出门左转远景论坛。

图片 1Paste_Image.png

AFN发送POST请求

  • 只要将GET改为POST即可,其它跟GET请求一样
- get{ // AFHTTPSessionManager内部包装了NSURLSession AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; NSDictionary *params = @{ @"username" : @"123", @"pwd" : @"123" }; [mgr POST:@"http://www.baidu.com/login" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) { NSLog(@"请求成功---%@", responseObject); } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"请求失败---%@", error); }];}

我们假设绿色的和橙色的view 里面设计到非常多乱七八糟的子View按照一般的写法 我们就是指定一个绿色和橙色的view 然后在里面做事件操作 但是我们还是离不开在storyBoard 里面出现一坨约束(请原谅我用这个词汇)

AFN上传文件

  • 上传文件,AFN做了非常好的封装,建议以后采用AFN来上传文件,当然如果你想学习上传文件的底层代码,可以浏览我另一篇博文------文件上传
- upload{ AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; [mgr POST:@"http://www.baidu.com/upload" parameters:nil constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { // 这是最简单的版本,只要设置请求的URL、给出文件路径和name,便可将文件上传到服务器,后面有代码介绍其它方式 [formData appendPartWithFileURL:[NSURL fileURLWithPath:@"/Users/zhamengjun/Desktop/Swift Programming Language.epub"] name:@"file" error:nil]; } success:^(NSURLSessionDataTask *task, id responseObject) { // 文件上传成功来到这段代码,注意responseObject的实际类型,AFN默认解析过 NSLog(@"------%@", responseObject); } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"failure"); }];}
  • 常规的方式上传文件,需要指定URL、文件名、文件的MIMEType、name,上面的方式,只是AFN根据请求的URL,默认获取了文件名和文件的MIMEType
  • 关于如何获取文件的MIMEType,请关注另一篇博文:获取文件的MIMEType
 //创建data对象 NSData *data = [NSData dataWithContentsOfURL:[NSURL fileURLWithPath:@"/Users/zhamengjun/Desktop/Swift Programming Language.epub"]]; // 上传书籍文件 [formData appendPartWithFileData:data name:@"file" fileName:@"Swift Programming Language.epub" mimeType:@"application/epub+zip"]; // 上传图片实例 [formData appendPartWithFileData:data name:@"file" fileName:@"Snip20150715_1.png" mimeType:@"image/png"];

在远景论坛里,你会看到各主流非苹果笔记本的黑苹果教程。越主流的越详细。但是我从10.8之后就转成了白苹果,所以之后是否黑苹果还能比较完美的支持就不太清楚了。

这样在构造IBOutLet时候就会出现一个ViewController有很多OutLet 多到让你起名字都很难起 而且控制器就代码就会非常多在iOS 5之后出现了ChildViewController 类似于View 可以addSubview 之后viewController 可以addChildViewController

通过AFN设置服务器响应数据的解析方式

  • 默认情况下,AFN采用以下方式解析服务器响应的数据
 // 解析服务器返回的JSON数据 [AFJSONResponseSerializer serializer];
  • 其它常用的解析方式
 // 直接使用“服务器本来返回的数据”,不做任何解析 [AFHTTPResponseSerializer serializer]; // 解析服务器返回的XML数据 [AFXMLParserResponseSerializer serializer];
  • 具体采用哪种解析方式,看客户端向服务器请求数据的类型

    • 如果请求的是图片,[AFHTTPResponseSerializer serializer];
    • 如果请求的是XML数据类型 [AFXMLParserResponseSerializer serializer];
    • 如果是JSON,就采用系统默认的做法
  • 实例代码

- xml{ AFHTTPSessionManager *mgr = [AFHTTPSessionManager manager]; // responseSerializer 用来解析服务器返回的数据 // 告诉AFN,以XML形式解析服务器返回的数据 mgr.responseSerializer = [AFXMLParserResponseSerializer serializer]; NSDictionary *params = @{ @"username" : @"123", @"pwd" : @"123", @"type" : @"XML" }; // 如果明确知道服务器返回数据的类型,可以直接将id改为NSXMLParser *parser [mgr GET:@"http://www.baidu.com/login" parameters:params success:^(NSURLSessionDataTask *task, NSXMLParser *parser) { } failure:^(NSURLSessionDataTask *task, NSError *error) { NSLog(@"请求失败---%@", error); }];}

然后按照"是"来说明,如果说黑苹果的复杂,那么选择安装虚拟机就是相对来说比较简单的一种方式了。随便搜索一下“虚拟机安装OS X”你就会搜索到通过VMware来安装各个版本苹果系统的详细教程了。这边我就不贴出来了。因为各位看客既然有兴趣看到这里,肯定有能力去运用搜索引擎和寻求各种网友的帮助了。但是需要说明的是,通过虚拟机的方式来安装运行OS X对于设备的要求也挺好的,第一是主板需要支持虚拟化,第二是内存要比较富裕,个人建议至少8G,最好16G。当然还需要硬盘比较大。这样的条件下才能比较愉快的运行虚拟机,要不然也是卡的不能自已。

1

还有一种最方便最省事儿的方法就是购买苹果电脑设备。这也是我最为推荐的方式。苹果的电脑现在分为Mac Mini、Macbook、iMac和Mac Pro。其中Macbook分为Macbook、Macbook air和Macbook Pro。个人建议是这样的,没钱就上Mac Mini这个比较便宜虽然只有一台比较小巧的主机,但是作为日常的开发和使用是绝对足够了。有钱就上Macbook Pro,再有钱你随便选咯。当然垃圾桶我是一只流口水但是并不能狠下心去买的。至于价格和购买方式,作为一个IT从业者或者准IT从业者肯定有各种方法的。

图片 2Paste_Image.png

什么?你和我说你不知道怎么去购买?那么给你传送门。

2 这时候你会发现右边多了两个小的控制器

图片 3Paste_Image.png

至于安装好系统配置的事情,我就不详述了。苹果的设计一向还是比较简单和人性化的。相信使用过iOS设备的人肯定不会太陌生。

3这时候新建两个控制器FirstContainerViewControllerSecondContainerViewController

1.2 软件准备

图片 4Paste_Image.png

1.2.1 Xcode安装

4运行项目

软件准备其实非常简单,分成下面5个步骤。

图片 5Paste_Image.png

1.注册好一个Apple Store的账号(即你的Apple ID)。

很多人都会说我并不喜欢用StoryBoard 但是一个东西存在总归是有原因的 我以前也不喜欢用StoryBoard 觉得好难控制 AutoLayout原因来自与对Autolayout不熟悉 很多公司的app 很多节目都是完全无法重用的 而且难度也不大 这样的界面要是一直用代码要累死 事实上 你也会写烦 apple 一直在推崇AutoLayout 这是大趋势 迂腐的程序员并不好 像iOS 9出的布局神奇UIStackViewStoryboard refrence都是为了简便开发

2.打开OS X下Apple Store的应用。

给大家推荐点资料吧 拥有这些 应该会对AutoLayout有个大的提高

3.输入你的Apple ID账号和密码。

版权声明:本文由ag真人发布于专项工作,转载请注明出处:AFNetworking的简单使用,iOS开发准备