NSMutableArray丢失所有对象
我的NSMutableArray正在丢失我从Facebooksearch中添加的所有数据。 我已经循环遍历每个迭代循环正确运行,并添加所有的数据,但一旦执行此代码,我的NSMutableArrays
恢复为零对象。 有没有办法做所有的添加发生在请求连接? 虽然arrays被剥离并初始化,但我不明白为什么会出现这个问题。 任何帮助感激!
在我的ViewDidLoad
_namesArray = [[NSMutableArray alloc] init]; _categoryArray = [[NSMutableArray alloc] init]; [FBRequestConnection startWithGraphPath:@"search?q=food&type=place¢er=51.89,-8.472&distance=1000" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { if (!error) { NSLog([NSString stringWithFormat:@"user events: %@", result]); NSArray *test = [result objectForKey:@"data"]; for (FBGraphObject *obj in test) { if ([obj objectForKey:@"category"]){ [_namesArray addObject:[obj objectForKey:@"category"]]; } if ([obj objectForKey:@"name"]){ [_categoryArray addObject:[obj objectForKey:@"name"]]; } } } else { NSLog([NSString stringWithFormat:@"error %@", error.description]); } }];
头文件
@property (strong, nonatomic) NSMutableArray *namesArray; @property (strong, nonatomic) NSMutableArray *categoryArray;
在asynchronous执行的completionHandler
,数组被填充。 这似乎是你的问题的原因是你试图从completionHandler
访问数组。 其实你应该使用completionHandler
数组或者从这个块开始另一个方法。
_namesArray = [[NSMutableArray alloc] init]; _categoryArray = [[NSMutableArray alloc] init]; // 1 - Start request [FBRequestConnection startWithGraphPath:@"search?q=food&type=place¢er=51.89,-8.472&distance=1000" completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { // 3 - request is finished. Fill the arrays if (!error) { NSLog([NSString stringWithFormat:@"user events: %@", result]); NSArray *test = [result objectForKey:@"data"]; for (FBGraphObject *obj in test) { if ([obj objectForKey:@"category"]){ [_namesArray addObject:[obj objectForKey:@"category"]]; } if ([obj objectForKey:@"name"]){ [_categoryArray addObject:[obj objectForKey:@"name"]]; } } } else { NSLog([NSString stringWithFormat:@"error %@", error.description]); } // Use arrays. For example, reload UITableView [_tableView reloadData]; }]; // 2 - now request is not finished yet
我敢打赌你误解了执行的stream程
//Point 1. ode executed first [FBRequestConnection startWithGraphPath:@"search?q=food&type=place¢er=51.89,-8.472&distance=1000" completionHandler: ^(FBRequestConnection *connection, id result, NSError *error) { //Point 3. Code executed last, once the network request is finished. } //Point 2. Code executed second
如果你在第2点检查你的数组,他们将不会被填充。 数组将不会被填充,直到完成处理程序在一段时间后触发。
- 使用Facebook Graph API提取用户信息时出现身份validation错误
- Facebook在iPhone应用程序
- 使用iOS SDK将多张照片作为时间轴上的单个照片上传,而不是像Facebook中的相册
- 是否有可能仅从本地移动应用程序使用来自Facebook的Scores&Achievements API?
- 在iOS应用程序中pipe理Facebook好友的最佳实践
- 如何在iPhone SDK中获取Facebook相册的照片?
- iOS:使用“下一个”分页获取Facebook朋友
- 如何在Facebook上上传/分享video?
- FBSDKAppInviteDialog的closures和结果总是奇怪的行为(null)