我的应用程序使用UIManagedDocument中包含的核心数据数据库。当我尝试通过iCloud进行同步时,数据很少刷新。我通过在我的方案中添加以下app参数来打开无处不在的日志。
-com.apple.coredata.ubiquity.logLevel 3
参数日志输出显示目标设备在源设备上发生更改后很快就会识别出更改,但未触发NSPersistentStoreDidImportUbiquitousContentChangesNotification
通知。有时,通知会在看到更新后大量时间触发,但通常不会。
但是,当我重新启动应用程序时(在日志打印了一些有关更改的文本后的任何时间),会立即触发 NSPersistentStoreDidImportUbiquitousContentChangesNotification
通知,从而导致数据刷新。
注意:我已订阅通知。
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(updatedFromCloud:)
name: NSPersistentStoreDidImportUbiquitousContentChangesNotification
object:nil];
答案 0 :(得分:1)
您需要将对象设置为您正在使用的NSPersistentStoreCoordinator,以便通知知道要侦听的对象。您已在代码中将其设置为nil。
示例:
[[NSNotificationCenter defaultCenter]addObserver:self
selector:@selector(updatedFromCloud:)
name: NSPersistentStoreDidImportUbiquitousContentChangesNotification
object:self.persistentStoreCoordinator];
如果您将观察者发布到可以访问NSManagedObjectContext(但不是协调器)的类中,则可以通过self.managedObjectContext.persistendStoreCoordinator简单地提取协调器。
希望这有帮助!