我得到以下从Web服务API的JSON响应。 我想从JSON中提取的产品数据。 我也想实现这个使用AFNetworking。
{"products": [
{
"product_id": "1170",
"name": "zzzz®",
"sort_order": 0,
"brand": "zzzas",
"product_category_id": "1090",
"location_ids": [
"1078"
],
"icon_url": "http://zzzzz.com/media/2502/zzzz.png",
"icon_date": "Wed, 07 Nov 2012 14:03:47 GMT",
"thumbnail_url": "http://zzzz.com/media/2591/zzdfs.png",
"thumbnail_date": "Wed, 07 Nov 2012 14:04:02 GMT"
},
{
"product_id": "1126",
"name": "ddddd®",
"sort_order": 1,
"brand": "dddsas",
"product_category_id": "1110",
"location_ids": [
"1095"
],
"icon_url": "http://zzzzz.com/media/2507/ddddd.png",
"icon_date": "Wed, 07 Nov 2012 14:03:48 GMT",
"thumbnail_url": "http://zzzzz.com/media/2596/sssds.png",
"thumbnail_date": "Wed, 07 Nov 2012 14:04:05 GMT"
}
]}
任何人都可以提出一个方法来做到这一点.
我该怎么事情就搞定。
Answer 1:
NSURLRequest *request = [NSURLRequest requestWithURL:[NSURL URLWithString:@"link"]];
AFJSONRequestOperation *operation = [AFJSONRequestOperation JSONRequestOperationWithRequest:request
success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
NSDictionary *jsonDict = (NSDictionary *) JSON;
NSArray *products = [jsonDict objectForKey:@"products"];
[products enumerateObjectsUsingBlock:^(id obj,NSUInteger idx, BOOL *stop){
NSString *productIconUrl = [obj objectForKey:@"icon_url"];
}];
} failure:^(NSURLRequest *request, NSHTTPURLResponse *response,
NSError *error, id JSON) {
NSLog(@"Request Failure Because %@",[error userInfo]);
}
];
[operation start];
试试这个。
更新1:你可以试试这个https://github.com/SSamanta/SSRestClient
更新2: https://github.com/SSamanta/SSHTTPClient (使用SWIFT)
可用的波德: pod 'SSHTTPClient', '~>1.2.2'
Answer 2:
如果你使用AFNetworking 3.0, AFJSONRequestOperation
不存在了,你必须使用AFHTTPSessionManager
:
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
[manager GET:@"http://example.com/resources.json" parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
Answer 3:
与AFNetworking解析JSON,只需要创建一个子类,并初始化过程中添加以下。
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
然后调用的方法等GET:parameters:completion:
将调用完成块用NSDictionary
作为response
参数(假设JSON是有效的)。
要下载图片,假设你想显示他们,检查出的UIImageView + AFNetworking 。
Answer 4:
如果你是刚刚开始,我会建议使用RestKit这项任务(它利用AFNetworking的)。 见一个例子在这里 。
Answer 5:
请检查AFNetworking的例子https://github.com/AFNetworking/AFNetworking/tree/master/Example
对于图像下载,EGOCache&EGOImageLoading可能是一个不错的选择https://github.com/enormego/EGOImageLoading
Answer 6:
Answer 7:
首先,为了运行AFNetworking你首先需要安装“的CocoaPods”。 这是什么? 的CocoaPods是针对这使得作为AFNetworking多安装第三方库的更多更快,安全的Objective-C的依赖性经理。 它提供了一个Ruby的宝石,你可以安装方式如下:
打通终端,并执行以下命令:
sudo gem install cocoapods -V
耐心点。 该命令可能需要一些时间来完成,所以“-V”选项将为您提供什么事情的详细数据。
接下来,我们执行:
pod setup
其中规定了我们的CocoaPods安装。
现在,我们必须建立一个PodFile这将服务器作为我们的CocoaPods配置文件。
回到终端,我们编写以下命令:
touch Podfile
open -e Podfile
第一个命令将创建一个名为“Podfile”与Unix的触摸编辑文件。 第二行会打开这个新创建的文件进行编辑。 现在,你应该看到一个空的文本编辑窗口中打开。 现在我们粘贴此文件中的以下内容:
platform :ios, '7.0'
pod "AFNetworking", "~> 2.0"
现在是时候建立我们的可可工作环境。 重要提示:请确保你的终端在Xcode项目的当前目录在终端中使用“CD”命令更改目录。 例:
cd /user/xcode/myproject
一旦你确定你是在正确的目录执行以下命令终端:
pod setup
然后我们通过书面形式安装依赖于我们的项目:
pod install
现在,这是一个重要的注意事项:既然你要安装一个项目,这是以前没有当前的Xcode项目内,你必须为你的当前Xcode项目工作区创建工作区(如果你还没有这样做了。)为您的Xcode项目做到以下几点:
File > Save Workspace
一旦你完成,浏览到您的Xcode工作区文件的目录,然后执行以下命令:
open YourProjectName.xcworkspace
现在,你可以用“导入”在任何文件的开头访问AFNetworking的内置API的功能。
文章来源: AFNetworking and jSON