1

Webサービスから定期的に更新を受け取るCoreDataEntityがあります。このコアデータエンティティがコンテンツを変更するときに、ViewControllerクラスの1つでデリゲートメソッドが呼び出されるようにしたいと思います。これは、そのViewControllerで適切なデータを更新できるようにするためです。どうすればこれを行うことができますか。

これは、Core Dataの内容が変更されたときにデリゲートメッセージをテーブルビューに送信するNSFetchedResultsControllerに似ていますが、この場合はNSFetchedResultsControllerを使用したくありません。

ありがとう

4

1 に答える 1

5

私があなたなら、実際には委任以外のことをします。通知を使用します。

「NSManagedObjectContextDidSaveNotification」を監視でき、Webサービスからの変更を保存するときに、ViewControllerでアクティビティをキューに入れることができます。

したがって、View Controllerが作成されたときにこの遵守を開始し、ViewControllerが終了したときに終了したいとします。

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
    self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
    if (self) {

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(managedObjectContextDidSave:) name:NSManagedObjectContextDidSaveNotification object:nil];
    }
    return self;
}

- (void)dealloc {
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}

そして、あなたがする必要があるのは変化を観察することだけです:

- (void)managedObjectContextDidSave:(NSNotification *)notification {
    // Update your stuff here.
}
于 2012-07-22T02:01:09.573 に答える