AFNetworking 不能无法为该请求检索数据数据 求助

AFNetworking请求各种类型的数据备忘笔记
我的图书馆
AFNetworking请求各种类型的数据备忘笔记
& & & & & & & & & & & & & & & AFNetworking请求各种类型的数据备忘笔记
AFNetworking是一个轻量级的iOS网络通信类库。它建立在NSURLConnection和NSOperation等类库的基础上,让很多网络通信功能的实现变得十分简单。它支持HTTP请求和基于REST的网络服务(包括GET、POST、
PUT、DELETE等)。支持ARC。
Github地址:
1.&&&&&//&&
2.&&&&&//&&MJViewController.m&&
3.&&&&&//&&03.AFN演练&&
4.&&&&&//&&
5.&&&&&//&&Created&by&apple&on&14-4-30.&&
6.&&&&&//&&Copyright&(c)&2014年&itcast.&All&rights&reserved.&&
7.&&&&&//&&
9.&&&&&#import&"MJViewController.h"&&
10.&&&#import&"AFNetworking.h"&&
12.&&&@interface&MJViewController&()&&
14.&&&@end&&
16.&&&@implementation&MJViewController&&
17.&&&/**&
18.&&&&要使用常规的AFN网络访问&
20.&&&&1.&AFHTTPRequestOperationManager&*manager&=&[AFHTTPRequestOperationManager&manager];&
22.&&&&&&&所有的网络请求,均有manager发起&
24.&&&&2.&需要注意的是,默认提交请求的数据是二进制的,返回格式是JSON&
26.&&&&&&&1&&如果提交数据是JSON的,需要将请求格式设置为AFJSONRequestSerializer&
27.&&&&&&&2&&如果返回格式不是JSON的,&
29.&&&&3.&请求格式&
31.&&&&&&&&AFHTTPRequestSerializer&&&&&&&&&&&&二进制格式&
32.&&&&&&&&AFJSONRequestSerializer&&&&&&&&&&&&JSON&
33.&&&&&&&&AFPropertyListRequestSerializer&&&&PList(是一种特殊的XML,解析起来相对容易)&
35.&&&&4.&返回格式&
37.&&&&&&&&AFHTTPResponseSerializer&&&&&&&&&&&二进制格式&
38.&&&&&&&&AFJSONResponseSerializer&&&&&&&&&&&JSON&
39.&&&&&&&&AFXMLParserResponseSerializer&&&&&&XML,只能返回XMLParser,还需要自己通过代理方法解析&
40.&&&&&&&&AFXMLDocumentResponseSerializer&(Mac&OS&X)&
41.&&&&&&&&AFPropertyListResponseSerializer&&&PList&
42.&&&&&&&&AFImageResponseSerializer&&&&&&&&&&Image&
43.&&&&&&&&AFCompoundResponseSerializer&&&&&&&组合&
44.&&&&*/&&
46.&&&-&(void)viewDidLoad&&
48.&&&&&&&[super&viewDidLoad];&&
49.&&&&&&&&&
50.&&&&&&&[self&reach];&&
53.&&&#pragma&mark&-&演练&&
54.&&&#pragma&mark&-&检测网络连接&&
55.&&&-&(void)reach&&
57.&&&&&&&/**&
58.&&&&&&&&AFNetworkReachabilityStatusUnknown&&&&&&&&&&=&-1,&&//&未知&
59.&&&&&&&&AFNetworkReachabilityStatusNotReachable&&&&&=&0,&&&//&无连接&
60.&&&&&&&&AFNetworkReachabilityStatusReachableViaWWAN&=&1,&&&//&3G&花钱&
61.&&&&&&&&AFNetworkReachabilityStatusReachableViaWiFi&=&2,&&&//&局域网络,不花钱&
62.&&&&&&&&*/&&
63.&&&&&&&//&如果要检测网络状态的变化,必须用检测管理器的单例的startMonitoring&&
64.&&&&&&&[[AFNetworkReachabilityManager&sharedManager]&startMonitoring];&&
65.&&&&&&&&&
66.&&&&&&&//&检测网络连接的单例,网络变化时的回调方法&&
67.&&&&&&&[[AFNetworkReachabilityManager&sharedManager]&setReachabilityStatusChangeBlock:^(AFNetworkReachabilityStatus&status)&{&&
68.&&&&&&&&&&&NSLog(@"%d",&status);&&
69.&&&&&&&}];&&
72.&&&#pragma&mark&-&Session&下载&&
73.&&&-&(void)sessionDownload&&
75.&&&&&&&NSURLSessionConfiguration&*config&=&[NSURLSessionConfiguration&defaultSessionConfiguration];&&
76.&&&&&&&AFURLSessionManager&*manager&=&[[AFURLSessionManager&alloc]&initWithSessionConfiguration:config];&&
77.&&&&&&&&&
78.&&&&&&&NSString&*urlString&=&@"http://localhost/itcast/videos/01.C语言-语法预览.mp4";&&
79.&&&&&&&urlString&=&[urlString&stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];&&
80.&&&&&&&&&
81.&&&&&&&NSURL&*url&=&[NSURL&URLWithString:urlString];&&
82.&&&&&&&NSURLRequest&*request&=&[NSURLRequest&requestWithURL:url];&&
83.&&&&&&&&&
84.&&&&&&&NSURLSessionDownloadTask&*task&=&[manager&downloadTaskWithRequest:request&progress:nil&destination:^NSURL&*(NSURL&*targetPath,&NSURLResponse&*response)&{&&
85.&&&&&&&&&&&//&指定下载文件保存的路径&&
86.&&&//&&&&&&&&NSLog(@"%@&%@",&targetPath,&response.suggestedFilename);&&
87.&&&&&&&&&&&//&将下载文件保存在缓存路径中&&
88.&&&&&&&&&&&NSString&*cacheDir&=&NSSearchPathForDirectoriesInDomains(NSCachesDirectory,&NSUserDomainMask,&YES)[0];&&
89.&&&&&&&&&&&NSString&*path&=&[cacheDir&stringByAppendingPathComponent:response.suggestedFilename];&&
90.&&&&&&&&&&&&&
91.&&&&&&&&&&&//&URLWithString返回的是网络的URL,如果使用本地URL,需要注意&&
92.&&&&&&&&&&&NSURL&*fileURL1&=&[NSURL&URLWithString:path];&&
93.&&&&&&&&&&&NSURL&*fileURL&=&[NSURL&fileURLWithPath:path];&&
94.&&&&&&&&&&&&&
95.&&&&&&&&&&&NSLog(@"==&%@&||||&%@",&fileURL1,&fileURL);&&
96.&&&&&&&&&&&&&
97.&&&&&&&&&&&return&fileURL;&&
98.&&&&&&&}&completionHandler:^(NSURLResponse&*response,&NSURL&*filePath,&NSError&*error)&{&&
99.&&&&&&&&&&&NSLog(@"%@&%@",&filePath,&error);&&
100.& &&&&}];&&
101.& &&&&&&
102.& &&&&[task&resume];&&
105.& #pragma&mark&-&POST&JSON&&
106.& -&(void)postJSON&&
108.& &&&&AFHTTPRequestOperationManager&*manager&=&[AFHTTPRequestOperationManager&manager];&&
109.& &&&&&&
110.& &&&&NSDictionary&*dict&=&@{@"name":&@"zhangsan"};&&
111.& &&&&NSDictionary&*dict1&=&@{@"name":&@"wangwu"};&&
112.& &&&&NSArray&*array&=&@[dict,&dict1];&&
113.& &&&&//&设置请求格式&&
114.& &&&&manager.requestSerializer&=&[AFJSONRequestSerializer&serializer];&&
115.& &&&&//&设置返回格式&&
116.& &&&&manager.responseSerializer&=&[AFHTTPResponseSerializer&serializer];&&
117.& &&&&&&
118.& &&&&[manager&POST:@"http://localhost/postjson.php"&parameters:array&success:^(AFHTTPRequestOperation&*operation,&id&responseObject)&{&&
119.& &&&&&&&&NSString&*result&=&[[NSString&alloc]&initWithData:responseObject&encoding:NSUTF8StringEncoding];&&
120.& &&&&&&&&&&
121.& &&&&&&&&NSLog(@"%@",&result);&&
122.& &&&&}&failure:^(AFHTTPRequestOperation&*operation,&NSError&*error)&{&&
123.& &&&&&&&&&&
124.& &&&&}];&&
125.& &&&&&&
128.& #pragma&mark&-&随机文件名上传&&
129.& -&(void)postUpload1&&
131.& &&&&//&本地上传给服务器时,没有确定的URL,不好用MD5的方式处理&&
132.& &&&&AFHTTPRequestOperationManager&*manager&=&[AFHTTPRequestOperationManager&manager];&&
133.& &&&&manager.responseSerializer&=&[AFHTTPResponseSerializer&serializer];&&
134.& &&&&&&
135.& &&&&[manager&POST:@"http://localhost/demo/upload.php"&parameters:nil&constructingBodyWithBlock:^(id&AFMultipartFormData&&formData)&{&&
136.& &&&&&&&&&&
137.& &&&&&&&&NSURL&*fileURL&=&[[NSBundle&mainBundle]&URLForResource:@"头像1.png"&withExtension:nil];&&
138.& &&&&&&&&&&
139.& &&&&&&&&//&要上传保存在服务器中的名称&&
140.& &&&&&&&&//&使用时间来作为文件名&&14:20:57.png&&
141.& &&&&&&&&//&让不同的用户信息,保存在不同目录中&&
142.& &&&&&&&&NSDateFormatter&*formatter&=&[[NSDateFormatter&alloc]&init];&&
143.& &&&&&&&&//&设置日期格式&&
144.& &&&&&&&&formatter.dateFormat&=&@"yyyy-MM-dd&HH:mm:ss";&&
145.& &&&&&&&&NSString&*fileName&=&[formatter&stringFromDate:[NSDate&date]];&&
146.& &&&&&&&&&&
147.& &&&&&&&&[formData&appendPartWithFileURL:fileURL&name:@"uploadFile"&fileName:fileName&mimeType:@"image/png"&error:NULL];&&
148.& &&&&&&&&&&
149.& &&&&}&success:^(AFHTTPRequestOperation&*operation,&id&responseObject)&{&&
150.& &&&&&&&&NSLog(@"OK");&&
151.& &&&&}&failure:^(AFHTTPRequestOperation&*operation,&NSError&*error)&{&&
152.& &&&&&&&&NSLog(@"error");&&
153.& &&&&}];&&
156.& #pragma&mark&-&POST上传&&
157.& -&(void)postUpload&&
159.& &&&&AFHTTPRequestOperationManager&*manager&=&[AFHTTPRequestOperationManager&manager];&&
160.& &&&&//&AFHTTPResponseSerializer就是正常的HTTP请求响应结果:NSData&&
161.& &&&&//&当请求的返回数据不是JSON,XML,PList,UIImage之外,使用AFHTTPResponseSerializer&&
162.& &&&&//&例如返回一个html,text...&&
163.& &&&&//&&
164.& &&&&//&实际上就是AFN没有对响应数据做任何处理的情况&&
165.& &&&&manager.responseSerializer&=&[AFHTTPResponseSerializer&serializer];&&
166.& &&&&&&
167.& &&&&//&formData是遵守了AFMultipartFormData的对象&&
168.& &&&&[manager&POST:@"http://localhost/demo/upload.php"&parameters:nil&constructingBodyWithBlock:^(id&AFMultipartFormData&&formData)&{&&
169.& &&&&&&&&&&
170.& &&&&&&&&//&将本地的文件上传至服务器&&
171.& &&&&&&&&NSURL&*fileURL&=&[[NSBundle&mainBundle]&URLForResource:@"头像1.png"&withExtension:nil];&&
172.& &&&&&&&&&&
173.& &&&&&&&&[formData&appendPartWithFileURL:fileURL&name:@"uploadFile"&error:NULL];&&
174.& &&&&}&success:^(AFHTTPRequestOperation&*operation,&id&responseObject)&{&&
175.& &&&&&&&&NSString&*result&=&[[NSString&alloc]&initWithData:responseObject&encoding:NSUTF8StringEncoding];&&
176.& &&&&&&&&&&
177.& &&&&&&&&NSLog(@"完成&%@",&result);&&
178.& &&&&}&failure:^(AFHTTPRequestOperation&*operation,&NSError&*error)&{&&
179.& &&&&&&&&NSLog(@"错误&%@",&error.localizedDescription);&&
180.& &&&&}];&&
183.& #pragma&mark&-&JSON&&
184.& -&(void)XMLData&&
186.& &&&&AFHTTPRequestOperationManager&*manager&=&[AFHTTPRequestOperationManager&manager];&&
187.& &&&&&&
188.& &&&&//&返回的数据格式是XML&&
189.& &&&&manager.responseSerializer&=&[AFXMLParserResponseSerializer&serializer];&&
190.& &&&&&&
191.& &&&&NSDictionary&*dict&=&@{@"format":&@"xml"};&&
192.& &&&&&&
193.& &&&&//&网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情&&
194.& &&&&[manager&GET:@"http://localhost/videos.php"&parameters:dict&success:^(AFHTTPRequestOperation&*operation,&id&responseObject)&{&&
195.& &&&&&&&&&&
196.& &&&&&&&&//&如果结果是XML,同样需要使用6个代理方法解析,或者使用第三方库&&
197.& &&&&&&&&//&第三方库第三方框架,效率低,内存泄漏&&
198.& &&&&&&&&NSLog(@"%@",&responseObject);&&
199.& &&&&}&failure:^(AFHTTPRequestOperation&*operation,&NSError&*error)&{&&
200.& &&&&&&&&NSLog(@"%@",&error);&&
201.& &&&&}];&&
204.& #pragma&mark&-&JSON&&
205.& -&(void)JSONData&&
207.& &&&&AFHTTPRequestOperationManager&*manager&=&[AFHTTPRequestOperationManager&manager];&&
208.& &&&&&&
209.& &&&&//&原本需要拼接get访问URL&?&&&=&&
210.& &&&&NSDictionary&*dict&=&@{@"format":&@"json"};&&
211.& &&&&&&
212.& &&&&//&网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情&&
213.& &&&&[manager&GET:@"http://localhost/videos.php"&parameters:dict&success:^(AFHTTPRequestOperation&*operation,&id&responseObject)&{&&
214.& &&&&&&&&NSLog(@"%@",&responseObject);&&
215.& &&&&&&&&//&提问:NSURLConnection异步方法回调,是在子线程&&
216.& &&&&&&&&//&得到回调之后,通常更新UI,是在主线程&&
217.& &&&&&&&&NSLog(@"%@",&[NSThread&currentThread]);&&
218.& &&&&}&failure:^(AFHTTPRequestOperation&*operation,&NSError&*error)&{&&
219.& &&&&&&&&NSLog(@"%@",&error);&&
220.& &&&&}];&&
223.& #pragma&mark&-&POST登录&&
224.& -&(void)postLogin&&
226.& &&&&AFHTTPRequestOperationManager&*manager&=&[AFHTTPRequestOperationManager&manager];&&
227.& &&&&&&
228.& &&&&//&原本需要拼接get访问URL&?&&&=&&
229.& &&&&NSDictionary&*dict&=&@{@"username":&@"wangwu",&@"password"&:&@"wang"};&&
230.& &&&&&&
231.& &&&&//&网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情&&
232.& &&&&[manager&POST:@"http://localhost/login.php"&parameters:dict&success:^(AFHTTPRequestOperation&*operation,&id&responseObject)&{&&
233.& &&&&&&&&NSLog(@"%@",&responseObject);&&
234.& &&&&&&&&//&提问:NSURLConnection异步方法回调,是在子线程&&
235.& &&&&&&&&//&得到回调之后,通常更新UI,是在主线程&&
236.& &&&&&&&&NSLog(@"%@",&[NSThread&currentThread]);&&
237.& &&&&}&failure:^(AFHTTPRequestOperation&*operation,&NSError&*error)&{&&
238.& &&&&&&&&NSLog(@"%@",&error);&&
239.& &&&&}];&&
242.& #pragma&mark&-&GET登录&&
243.& -&(void)getLogin&&
245.& &&&&AFHTTPRequestOperationManager&*manager&=&[AFHTTPRequestOperationManager&manager];&&
246.& &&&&&&
247.& &&&&//&原本需要拼接get访问URL&?&&&=&&
248.& &&&&NSDictionary&*dict&=&@{@"username":&@"wangwu",&@"password"&:&@"wang"};&&
249.& &&&&&&
250.& &&&&//&网络访问是异步的,回调是主线程的,因此程序员不用管在主线程更新UI的事情&&
251.& &&&&[manager&GET:@"http://localhost/login.php"&parameters:dict&success:^(AFHTTPRequestOperation&*operation,&id&responseObject)&{&&
252.& &&&&&&&&NSLog(@"%@",&responseObject);&&
253.& &&&&&&&&//&提问:NSURLConnection异步方法回调,是在子线程&&
254.& &&&&&&&&//&得到回调之后,通常更新UI,是在主线程&&
255.& &&&&&&&&NSLog(@"%@",&[NSThread&currentThread]);&&
256.& &&&&}&failure:^(AFHTTPRequestOperation&*operation,&NSError&*error)&{&&
257.& &&&&&&&&NSLog(@"%@",&error);&&
258.& &&&&}];&&
TA的最新馆藏
喜欢该文的人也喜欢基于AFNetworking3.0的网络请求封装,带有缓存
查看次数:20232
下载次数:4448
上传时间:
大小:262 B
最近很多人问一些基于AFNetworking3.0网络请求的封装,其实不用真的不用封装,唯一需要封装的地方就是客户端做缓存,统一把所有请求做了缓存接口。缓存用的是YYCache。基于AFNetworking的demo
您还没有登录!请或
下载过该代码的还下载了
本周热门下载
&2017 Chukong Technologies,Inc.
京公网安备89使用AFNetworking请求数据成功后走了两遍success的原因 - CSDN博客
使用AFNetworking请求数据成功后走了两遍success的原因
& & AFHTTPSessionManager *manager = [AFHTTPSessionManager
& & [manager GET:urlString
parameters:nil
progress:^(NSProgress *
_Nonnull downloadProgress) {
& & } success:^(NSURLSessionDataTask *
_Nonnull task, id&
_Nullable responseObject) {
&& & & // dispatch_async(dispatch_get_main_queue(), ^{
&& & & & & &
& & & & //});
& & } failure:^(NSURLSessionDataTask *
_Nullable task, NSError *
_Nonnull error) {
原因分析:AFNetworking默认就是在主线程中执行的,然后我在请求成功后又用gcd切到主线程中去进行一些请求成功后的操作,导致线程错乱又调了一次AF的success代码块,不进行线程操作即可解决该问题。。
记录一下 &
本文已收录于以下专栏:
相关文章推荐
我们在编程的时候会经常会出现这样的需求:同时请求几个接口回调成功以后在统一刷新UI,解决这个问题的方法有很多今天我们就说明下GCD下解决的方式。
GCD的leave和enter 
我们利用disp...
来自/ajax/413061.html
--------------------------拷贝内容 start ------------------...
问题:jquery ajax请求成功,返回了数据,但是不进success的分支。(被这个问题困扰了2天)
问题代码描述:
controller类代码:
* 向页面输出json对象
后台使用springmvc接收文件上传规定格式为json经过测试可以成功上传,但是AJAX的回调函数success中始终无法获取到data值,原因是根本没走这个方法,到ajaxfileupload.j...
一.IOS原生数据请求与数据解析
IOS开发中原始的数据请求是以字符串的形式,字符串参数传到服务器,然后接收服务器返回的字符串进行解析。
通常一个完整的数据请求过程中数据处理经如下几个阶段:
#import &AFNetworking.h&- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setu...
原文:/a/2705?utm_source=tuicool&utm_medium=referral
我们今天是来深入...
AFNetworking框架的使用:将此框架拖进工程,导入工程头文件即可使用。
具体使用非常简单,大致过程如下:
第一步:新建一个网址字符串。
第二步:新建AFHTTPRequestOperation...
前台设计中,涉及到跨域访问的时候,
通常情况下
最近项目中,突然遇到这种问题,具体:
页面代码:
$.getJSON(&?jsonpCallback=?&,function (json) {
他的最新文章
讲师:何宇健
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)数据从文档中读取处理的过程称为&解码&过程,即解析和读取过程,来看一下如果利用框架去管理从聚合数据上面请求到的数据。
一、下载并导入AFNetworking框架
这部分内容如果不了解的话可以点击
二、聚合数据API-餐饮美食
1.申请餐饮美食API:
2.请求体介绍
lng和lat参数表示对应的经纬度,用来确定你想要请求哪个地方的美食餐饮,key参数即为APPKEY,你申请该API以后可以到应用详细页查询,dtype参数是用来确定你想得到的数据是什么格式的,默认为JSON,如果想要xml格式就需要设置该参数。
3.返回值介绍
该餐饮美食API会返回上图所示的参数,可以根据实际需要来使用。
三、发送网络请求
1.知道API需要请求的参数以后,就可以通过接口地址和API文档中给出的请求方式,请求到所需的数据。
2.根据餐饮美食API的接口文档我们知道需要用get方式去请求。
NSMutableDictionary *params=[NSMutableDictionary dictionary];
//在数组里面添加请求参数
params[@"key"] = @"987d0c7bdbbfcc2";
params[@"lng"] = @"121.538123";
params[@"lat"] = @"31.677132";
//创建请求管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//发送请求,使用get,请求成功以后返回的数据会存放到responseObject中
[manager GET:@"/catering/query" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
//在请求成功以后程序会执行success
//此处可以对请求到的数据进行处理
} failure:^(NSURLSessionDataTask *task, NSError *error) {
四、解析返回的数据
1.我们发送网络请求以后会返回下图所示的数据:
从图中我们可以看到发送请求以后返回了一个字典,字典中result关键字对应的数组就是我们想要得到的数据,我们项目中需要用到该数组中navigation参数对应的数据,那我就可以遍历result关键字对应的数组,找到navigation参数对应的数据,然后将其存放到一个新的数组中。
[manager GET:@"/catering/query" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
//新建一个字典来存放返回的数据
NSMutableDictionary *datasouce=[responseObject mutableCopy];
//在返回的字典中,将关键字result索引到的数据存放到另外的数组中
NSArray * resultArray = [datasouce objectForKey:@"result"];
//遍历resultArray数组得到navigation对应的数据,并存放到result数组中
for (NSDictionary *dic in resultArray) {
NSString *navigation = [dic objectForKey:@"navigation"];
[result addObject:navigation];
[self.delegate data:result];
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"%@",error);
2.创建一个继承于NSObject的Data类,用来得到从聚合数据上面请求到的数据,并在Data.h文件中添加相应的属性方法
-(void)//在ViewController中执行此方法从而得到JSON数据
3.在Data.m文件中完成相应的属性方法
-(void) getdata{
__block NSMutableArray *result = [[NSMutableArray alloc] init];
NSMutableDictionary *params=[NSMutableDictionary dictionary];
//在数组里面添加请求参数,根据聚合数据的文档说明添加
params[@"key"] = @"987d0c7bdbbfcc2";
params[@"lng"] = @"121.538123";
params[@"lat"] = @"31.677132";
//创建请求管理者
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
//发送请求
[manager GET:@"/catering/query" parameters:params success:^(NSURLSessionDataTask *task, id responseObject) {
//如果数据请求成功返回到responseObject中
NSMutableDictionary *datasouce=[responseObject mutableCopy];
//在返回的字典中通过关键字result索引到的数据存放到另外的数组中
NSArray * resultArray = [datasouce objectForKey:@"result"];
//遍历resultArray数组得到navigation对应的数据
for (NSDictionary *dic in resultArray) {
NSString *navigation = [dic objectForKey:@"navigation"];
[result addObject:navigation];
[self.delegate data:result];
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"%@",error);
4.创建一个DataDelegate协议,并添加相关的代理方法,用来传递JSON数据。
#import &Foundation/Foundation.h&
@protocol DataDelegate //通过代理将得到的JSON数据传递到ViewController
- (void) data: (NSMutableArray *)
@interface Data : NSObject
@property (nonatomic, weak) id &DataDelegate&//代理属性
五、在TableView上面显示得到的JSON数据
1.添加相关的属性以及代理协议
@interface ViewController ()&UITableViewDataSource,UITableViewDelegate,DataDelegate&
@property (nonatomic, strong) UITableView *myTableV
@property (nonatomic, strong) NSArray *myA//用来存放JSON数据的数组
@property (nonatomic, strong) Data *myD
2.使懒加载方式初始化所需的控件以及数组
- (Data *)myData{
if (!_myData) {
_myData = [[Data alloc] init];
_myData.delegate =
[_myData getdata];
return _myD
- (NSArray *) myArray{
if (!_myArray) {
_myArray = [[NSArray alloc ] init];
return _myA
- (UITableView *) myTableView{
if (!_myTableView) {
_myTableView = [[UITableView alloc] initWithFrame:self.view.frame];
_myTableView.dataSource =
_myTableView.delegate =
[self.view addSubview: _myTableView];
return _myTableV
- (void)viewDidLoad {
[super viewDidLoad];
[self myArray];
[self myData];
[self myTableView];
3.在tableView的数据源方法中将得到的JSON数据显示到tableView上面
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
self.myArray.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"];
if (cell == nil) {
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"cell"];
if (self.myArray != nil && self.myArray.count & 0) {
cell.textLabel.text = [self.myArray objectAtIndex:[indexPath row]];
4.由于tableView的数据源方法会先执行,因此我们需要在Data的代理方法中得到JSON数据以后刷新tableView。
- (void)data:(NSMutableArray *)array{
self.myArray =
[self.myTableView reloadData];
阅读(...) 评论()

我要回帖

更多关于 ajax请求json数据实例 的文章

 

随机推荐