我想在视图消失之前等待saveInBackground
Parse方法。因为以下视图正在使用此数据,但没有时间刷新...
这是我的代码:
-(void) viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
PFQuery *urlImage = [PFQuery queryWithClassName:@"urlImage"];
[urlImage whereKey:@"objectId" equalTo:@"IcK6mFChL7"];
[urlImage getFirstObjectInBackgroundWithBlock:^(PFObject *urlImageParse, NSError *error) {
if (!error) {
[urlImageParse setObject:self.photoURL.text forKey:@"URL"];
[urlImageParse saveInBackground];
} else {
NSLog(@"Error: %@", error);
}}];
}
我可以在viewWillDisappear:
的其他地方创建此代码吗?或者可以使用MBProgressHUD
?
答案 0 :(得分:2)
viewWillDisappear是一个执行代码的地方,知道视图即将消失。我相信你要做的就是在视图真正消失之前采取一些行动 这部分就在这里 - > [urlImage getFirstObjectInBackgroundWithBlock:^ 表示该块内的代码将在不同的线程上运行。所以你现在所说的是,当视图即将消失时,关闭另一个线程并在后台保存一些东西,但继续做你需要做的事情,比如让这个视图消失。这就是你告诉系统的内容。所以它继续,做它将要做的事情,而不是关心保存该对象的结果 你的观点即将消失是有原因的。您的应用中发生了一些事情,系统认为需要关闭此视图并显示另一个视图。可能是您点击后退按钮,可能是您单击了一个保存按钮,在该代码的末尾,您要求系统将此视图从堆栈中弹出。我们真的不知道你发布的代码。我们可以假设,无论采取什么行动使这个视图消失,你应该尝试保存这个对象,你应该在离开这个视图之前等待响应。如果下一个视图依赖于该信息,则忽略此视图并呈现下一个视图是没有意义的,直到您获得成功的响应以保存该对象。这只是一个假设,因为当您尝试保存此数据时,我不明白您的应用正在做什么或正在发生什么,以及下一个视图的样子。我会说通常,如果您需要保存这些内容,为了继续在您的应用程序中,您应该保存此数据并等待响应,向用户显示错误消息,或者如果成功,然后转到下一个屏幕。