我想在 View 消失之前等待 saveInBackground
Parse 方法。因为下面的 View 正在使用这个数据,但是没有时间刷新...
这是我的代码:
-(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
?
最佳答案
viewWillDisappear 是执行代码的地方,知道 View 即将消失。我相信您要做的是在 View 实际消失之前执行一些操作。
这部分就在这里 -> [urlImage getFirstObjectInBackgroundWithBlock:^
意味着该 block 内的代码将在不同的线程上运行。所以你现在说的是,当 View 即将消失时,分离另一个线程并在后台保存一些东西,但继续做你需要做的任何事情,比如让这个 View 消失。这就是你告诉系统的。所以它继续,做它想做的事,而不关心保存那个对象的结果。
你的观点即将消失是有原因的。您的应用程序中发生了一些事情,系统认为它需要关闭此 View 并显示另一个 View 。可能是您点击了后退按钮,也可能是您单击了保存按钮,并且在该代码的末尾,您要求系统将此 View 从堆栈中弹出。我们真的不知道只有您发布的代码。不过,我们可以假设,无论采取什么措施使该 View 消失,您应该尝试保存该对象的位置,并且您可能应该在离开该 View 之前等待响应。如果下一个 View 依赖于该信息,那么关闭该 View 并显示下一个 View 是没有意义的,直到您获得该对象已保存的成功响应。但这只是一个假设,因为我不了解您的应用程序在做什么,或者在您尝试保存此数据时发生了什么,以及下一个 View 是什么样子。我会说,通常情况下,如果您需要保存这些东西,以便在您的应用程序中继续,您应该保存这些数据并等待响应,以向用户显示错误消息,或者如果成功,然后转到下一个屏幕。
关于ios - 在 viewDisappear 之前等待 saveInBackground Parse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29231948/