我在使用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];
}
}];
}
答案 0 :(得分:3)
有时这样做。与使用Core Data的iCloud的许多严重问题相比,这是一个非常小的问题。
接收此通知时我喜欢做的是首先检查插入,更新和删除的对象,然后除非找到某些内容,否则不要继续进行合并。做点什么
NSDictionary *userInfo = [notification userInfo];
if (([userInfo objectForKey:NSInsertedObjectsKey] > 0) ||
([userInfo objectForKey:NSUpdatedObjectsKey] > 0) ||
([userInfo objectForKey:NSDeletedObjectsKey] > 0))
{
// merge...
}