我正在将Facebook用户信息数据放入NSMutableArray中,使用请求方法调用内的for循环来完成此操作。问题是我无法在方法调用之外获取数据。 NSLog中的第一个self.items可以显示我想要的数据,其中包含我输入的所有全名。但是,NSLog中的第二个self.items是一个空的NSMutableArray。
在.h文件中:
@property (strong,nonatomic) NSMutableArray *items;
初始化数组:
self.items = [[NSMutableArray alloc] init];
这是我的代码:
- (IBAction)reloadFriendList:(id)sender {
FBRequest *request = [FBRequest requestForMyFriends];
[request startWithCompletionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
NSString *space = @" ";
for (id<FBGraphUser> user in result[@"data"]) {
NSArray *array = [[NSMutableArray alloc] initWithObjects:[user first_name], space, [user last_name], nil];
NSString *fullName = [array componentsJoinedByString:@""];
[self.items addObject:fullName];
}
NSLog(@"%@",self.items);
}];
NSLog(@"%@",self.items);
}
有人可以告诉我怎么回事吗?谢谢!
最佳答案
我认为您不完全了解这里发生的事情。当请求完成时,将执行完成处理程序块,而在您调用[request startWithCompletionHander ...]之后立即执行完成处理程序块后的NSLog语句。因此,以下是按时间顺序排列的事件:
您调用[request startWithCompletionHandler ...]
执行块外的NSLog(self.item应该为空,因为请求尚未完成)
一旦请求在某个任意时间完成后,将执行完成处理程序块并填充您的self.items,然后NSLog将打印出所有项目(如果项目实际在响应中,则应为非空)。
关于ios - 无法在startWithCompletionHandler之外检索数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21636693/