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 に答える