在 viewDisappear 之前等待 saveInBackground Parse

Wait saveInBackground Parse before viewDisappear

我想等待 saveInBackground 在视图消失之前解析方法。因为下面的视图正在使用这个数据,但是没有时间刷新...

这是我的代码:

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