0

我想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

4

1 回答 1

2

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

于 2015-03-24T12:54:57.343 回答