博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ios开发备忘录一
阅读量:5823 次
发布时间:2019-06-18

本文共 2922 字,大约阅读时间需要 9 分钟。

  hot3.png

忙完了一堆事终于可以安心写写一直想写的ios开发了,但是这两天进度缓慢,各种不顺,花了两天时间终于搞定了在ios应用中使用AFNetworking开源第三方库来远程获取服务器端的json数据并且解析保存在内存中。

首先要配置cocoapods用于管理第三方库

首先更新ruby

sudo gem update –system

 之后利用ruby包管理下载cocoapods’

sudo gem install cocoapods

(pod setup)

 在需要用到第三方管理的工程根目录下

touch Podfile

open –e Podfile (vim Podfile)

在Podfile 中填入的信息

platform :ios, ‘5.0’

pod ‘AFNetworking’, ‘0.9.1’

然后pod install 一下就搞定了

貌似pod install的时候原来的xcodeproj还不能关,不然xcworkspace打开就跑不了额

 但是不知道为什么版本升到1.0之后就没法正确编译了 在AFNetworking的源码中会出现parse issue的离奇错误

配置好之后 进入工程的根路径  打开.xcworkspace的文件进入xcode

可以发现已经在pod中配置好了AFNetworking第三方库

新建UIViewController 然后在控件的回调方法中添加如下代码

相对于远程服务器端的jsp中输出的

<%response.setContentType("text/json");out.println("{\"name\":\"clea\", \"age\":21}");%>

对应的oc解析代码为

- (IBAction)buttonAction:(id)sender{        NSURL* url = [NSURL URLWithString:@"http://threethree.cloudfoundry.com/jsonreply.jsp"];    NSURLRequest* request = [NSURLRequest requestWithURL:url];        AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {        NSLog(@"App.net Global Stream: %@", JSON);        NSDictionary* jsonDict = (NSDictionary*) JSON;                NSString* name = [jsonDict objectForKey:@"name"];        int age = [[jsonDict objectForKey:@"age"] intValue];                NSLog(@"name: %@", name);        NSLog(@"age: %d", age);            } failure:^(NSURLRequest* request, NSHTTPURLResponse* response, NSError* error, id JSON){        NSLog(@"failure!!!");        NSLog(@"fail: %@", [error localizedDescription]);    }];    [operation start];}

就只是将json对象当做字典对象解析键值对即可。

对于服务器端jsp文件的输出

<%response.setContentType("text/json");out.println("[{\"name\":\"clea\", \"age\":21}, {\"name\":\"kiwi\", \"age\":21}]");%>

对应的oc解析代码为

- (IBAction)arrayButtonAction:(id)sender{    NSURL* url = [NSURL URLWithString:@"http://threethree.cloudfoundry.com/jsonreplyarray.jsp"];    NSURLRequest* request = [NSURLRequest requestWithURL:url];    AFJSONRequestOperation* afjsonRequestOperation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request success:^(NSURLRequest* request, NSHTTPURLResponse* response, id JSON){        NSArray* jsonArray = (NSArray*)JSON;        for(NSDictionary* jsonDict in jsonArray){            NSString* name = [jsonDict objectForKey:@"name"];            int age = [[jsonDict objectForKey:@"age"] intValue];            NSLog(@"name : %@\n", name);            NSLog(@"age : %d\n", age);                    }    } failure:^(NSURLRequest* request, NSHTTPURLResponse* response, NSError* error, id JSON){        NSLog(@"error is : %@", [error localizedDescription]);    }];    [afjsonRequestOperation start];}

和之前的不同就是要先将json对象当做数组对象再逐个解析

要注意的是在服务器端一定要将响应的类型设置为text/json

在客户端使用AFNetworking的类中要包含头文件

#import "AFJSONRequestOperation.h"

最后就可以再command line中看到输出的结果了

本次测试使用的是 mac os x 10.7.2 xcode 4.2.1

转载于:https://my.oschina.net/kiloct/blog/119237

你可能感兴趣的文章
rsync备份工具
查看>>
这可能是最详细的一线大厂Mysql面试题详解了
查看>>
基于Android 虹软人脸、人证对比,活体检测
查看>>
8分钟可以完成一个小程序?而且是一个11岁小姑娘完成的.......
查看>>
Box连结共享造成百家企业档案摊在太阳下
查看>>
VMware Workstation9 下安装 CentOS6.9 32位系统( 安装图文教程 )
查看>>
闲着无聊之StopWatch
查看>>
git学习笔记--创建和合并分支
查看>>
linux云服务器硬盘分区及挂载
查看>>
90后黑客以1分钱拍迪斯尼门票后转卖 1周赚50万
查看>>
FFmpeg Maintainer赵军:FFmpeg关键组件与硬件加速
查看>>
PopupWindow(三)
查看>>
查询表给了那角色权限
查看>>
根据关键字获取properties文件对应属性
查看>>
Swift中类的使用
查看>>
一个简单的AJAX实现
查看>>
TOTP 基于时间的动态密码算法
查看>>
iOS开发 隐式动画的原理及实现
查看>>
centos下postgresql安装使用
查看>>
Mysql 慢 sql 日志监控
查看>>