NSPersistentStoreDidImportUbiquitousContentChangesNotification返回空

时间:2013-07-19 08:49:32

标签: ios objective-c core-data icloud

我在使用CoreData + iCloud同步时遇到问题。

有时,通知NSPersistentStoreDidImportUbiquitousContentChangesNotification在Inserted,Updated和Deleted中返回一个空数组。

如果在更改时调用此通知,为什么要返回空通知?

感谢!!!

调用通知的代码:

 - (void)persistentStoreDidChange:(NSNotification*)notification
 {
     DLog(@"Change Detected! Notification: %@", notification.description)

     [__managedObjectContext performBlockAndWait:^(void)
     {
         [__managedObjectContext mergeChangesFromContextDidSaveNotification:notification];

         for(id<CoreDataDelegate>delegate in _delegates)
         {
             if([delegate respondsToSelector:@selector(persistentStoreDidChange)])
                [delegate persistentStoreDidChange];

         }
     }];
 }

1 个答案:

答案 0 :(得分:3)

有时这样做。与使用Core Data的iCloud的许多严重问题相比,这是一个非常小的问题。

接收此通知时我喜欢做的是首先检查插入,更新和删除的对象,然后除非找到某些内容,否则不要继续进行合并。做点什么

NSDictionary *userInfo = [notification userInfo];
if (([userInfo objectForKey:NSInsertedObjectsKey] > 0) || 
    ([userInfo objectForKey:NSUpdatedObjectsKey] > 0) || 
    ([userInfo objectForKey:NSDeletedObjectsKey] > 0)) 
{
    // merge...
}