iOS Parse SDK:已提取对象的数组未离开提取块的范围

iOS Parse SDK:已提取对象的数组未离开提取块的范围,ios,arrays,parse-platform,fetch,Ios,Arrays,Parse Platform,Fetch,Scenario=我正在尝试从解析中获取数据,并将该数据存储到一个数组中,我可以在视图控制器类的任何位置使用该数组 问题=当我在下面运行时,日志2返回“(null)”。“objects”的内容似乎不想离开findObjects块。而且它需要做的是,否则提取是没有意义的 PFQuery *messageQuery = [PFQuery queryWithClassName:@"Message"]; [messageQuery whereKey:@"receiverID" equalTo:[PFUs

Scenario=我正在尝试从解析中获取数据,并将该数据存储到一个数组中,我可以在视图控制器类的任何位置使用该数组

问题=当我在下面运行时,日志2返回“(null)”。“objects”的内容似乎不想离开findObjects块。而且它需要做的是,否则提取是没有意义的

PFQuery *messageQuery = [PFQuery queryWithClassName:@"Message"];
[messageQuery whereKey:@"receiverID" equalTo:[PFUser currentUser][@"userID"]];
[messageQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

    messageArray = objects;

    NSLog(@"Log 1 = %@", messageArray);

}];

NSLog(@"Log 2 = %@", messageArray);
问题=为什么会发生这种情况?还是没有发生


我曾尝试将NSLog和“messageArray=objects”放在dispatch_async中,但它仍然返回“(null)”。给出了什么?

假设FindObjectsInBackgroundithBlock()在当前线程/队列之外的另一个线程/队列中执行其工作,代码流如下所示:

1. [messageQuery findObjectsInBackgroundWithBlock:...];
2. NSLog(@"Log 2 = %@", messageArray);
3. ^(NSArray *objects, NSError *error) {
     messageArray = objects;
     NSLog(@"Log 1 = %@", messageArray);
}
因此,在messageArray=objects之前执行第二个日志;有人打电话来。[messageQuery findObjectsInBackgroundWithBlock:…];立即返回,将来有时调用completionBlock。如果要在设置messageArray时更新ViewController中的某些控件,应将该代码或适当的方法调用放入completionBlock中,例如:

PFQuery *messageQuery = [PFQuery queryWithClassName:@"Message"];
[messageQuery whereKey:@"receiverID" equalTo:[PFUser currentUser][@"userID"]];
__weak tyepof(self) myself = self;
[messageQuery findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {

    messageArray = objects;

    NSLog(@"Log 1 = %@", messageArray);

    [myself updateWithMessages:messageArray];
}])


__软弱的自我=自我;是必需的,以避免您的completionBlock中出现保留循环。

我不明白。您输入的第一位代码是1、2、3。3是一段代码,那段代码去哪里了?(这与什么有关?)我感谢你的回答。但我很遗憾地告诉你,你提供给我的密码把我的大脑变成了椒盐卷饼。我不知道这意味着什么,也不知道这意味着什么。您在1、2和3中列出的第一位代码。3是一个区块-这个区块应该与什么有关?如果它是一个完成块,你能提供方法/函数的其余部分吗?“uuu弱泰普夫(self)我自己=self;”-我从来没有见过这样的事情,从来没有(把大脑变成冲水马桶)。我在另一篇文章中扩展了我的问题,你能检查一下并告诉我你的想法吗。很抱歉