1

2 つの Mac アプリケーション間で iCloud を介してコア データを同期する作業を行っています。ほとんど動作しています ( http://timroadley.com/2012/04/03/core-data-in-icloud/に基づく) - データは同期されていますが、必要なコンテンツ変更通知を受け取っていません。変更をローカル コンテキストにマージします。

私の AppDelegate の managedObjectContext メソッドでは:

NSManagedObjectContext * moc = [[NSManagedObjectContext alloc] 
  initWithConcurrencyType:NSMainQueueConcurrencyType];

[moc performBlockAndWait:
^{

  [moc setPersistentStoreCoordinator:coordinator];
  [[NSNotificationCenter defaultCenter] addObserver:self 
    selector:@selector(mergeChangesFrom_iCloud:) 
    name:NSPersistentStoreDidImportUbiquitousContentChangesNotification 
    object:coordinator];

}];

私のオブザーバー関数は決して呼び出されません:

- (void) mergeChangesFrom_iCloud:(NSNotification*) notification
{
  NSLog(@"Merging changes from iCloud");
  // everything past here is irrelevent - this log message never appears

データ ストアは確実に同期されています。アプリ A でレコードを削除し、アプリ B でテーブルを強制的にリロードすると、マージされていない変更に対して予想されるコア データ エラーが発生します。アプリ B を終了して再起動すると、正しく更新されたデータが表示されます。

addObserver 呼び出しのブレークポイントは、それが呼び出されていることを示しています。のブレークポイントmergeChangesFrom_iCloudは、そうでないことを示しています。

NSPersistentStoreDidImportUbiquitousContentChangesNotificationドキュメント (およびチュートリアル) が主張するように、コーディネーターが送信しないように見えるのはなぜですか? どこからデバッグを開始できますか?

アップデート

謎が深まる。ここに示されている Core Foundation 関数を使用する - NSNotificationCenter は、すべての NSNotifications をトラップおよびトレースしますNSPersistentStoreDidImportUbiquitousContentChangesNotification-飛び交う大量の通知の中にまったく表示されません。

まったく投稿されていないように見えます-また、起動時に初期ロードが行われた後、他の Core Data 関連の通知も表示されません。

4

0 に答える 0