ios开发备忘录一

忙完了一堆事终于可以安心写写一直想写的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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值