-1

私はそれに値を更新するためにコアデータモデルにこのコードを持っています:

if (!([photo.photoDescription isEqualToString:[photoDictionary[PHOTO_DESCRIPTION] description]])) {
        photo.photoDescription = [photoDictionary[PHOTO_DESCRIPTION] description];
        photo.isOnMap = [NSNumber numberWithBool:NO];
        [context save:&error];
    }

私のコントローラーでは、コアデータへの変更を調べるためのオブザーバーを追加しました:

  [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(notificaRicevut) name:NSManagedObjectContextDidSaveNotification object:self.context];

コードを実行する[context save:&error];と、通知が正しく送信されますが、通知メソッド内で新しい値を取得するように要求すると、新しい値ではなく古い値が取得されます。アプリを再起動すると、新しい値が正しく表示されます。問題はどこだ?ありがとう

4

2 に答える 2

1

このコードを通知メソッド内に配置することで解決しました:

    - (void)contextDidSave:(NSNotification *)notification
{
    dispatch_async(dispatch_get_main_queue(), ^{
        SEL selector = @selector(mergeChangesFromContextDidSaveNotification:);
        [self.context performSelectorOnMainThread:selector withObject:notification waitUntilDone:YES];
        [self updateMapWithPictureInCoreData];
    });
}

希望は役に立ちます

于 2013-11-06T15:35:09.263 に答える