iCloud NSPersistentStoreDidImportUbiquitousContentChangesNotification仅在应用启动后立即调用

时间:2012-10-03 05:28:42

标签: ios core-data icloud nsnotificationcenter uimanageddocument

我的应用程序使用UIManagedDocument中包含的核心数据数据库。当我尝试通过iCloud进行同步时,数据很少刷新。我通过在我的方案中添加以下app参数来打开无处不在的日志。

-com.apple.coredata.ubiquity.logLevel 3

参数日志输出显示目标设备在源设备上发生更改后很快就会识别出更改,但未触发NSPersistentStoreDidImportUbiquitousContentChangesNotification通知。有时,通知会在看到更新后大量时间触发,但通常不会。

但是,当我重新启动应用程序时(在日志打印了一些有关更改的文本后的任何时间),会立即触发 NSPersistentStoreDidImportUbiquitousContentChangesNotification通知,从而导致数据刷新。

注意:我已订阅通知。

[[NSNotificationCenter defaultCenter]addObserver:self
                                        selector:@selector(updatedFromCloud:)
                                            name: NSPersistentStoreDidImportUbiquitousContentChangesNotification
                                          object:nil];

1 个答案:

答案 0 :(得分:1)

您需要将对象设置为您正在使用的NSPersistentStoreCoordinator,以便通知知道要侦听的对象。您已在代码中将其设置为nil。

示例:

[[NSNotificationCenter defaultCenter]addObserver:self
                                    selector:@selector(updatedFromCloud:)
                                        name: NSPersistentStoreDidImportUbiquitousContentChangesNotification
                                      object:self.persistentStoreCoordinator];

如果您将观察者发布到可以访问NSManagedObjectContext(但不是协调器)的类中,则可以通过self.managedObjectContext.persistendStoreCoordinator简单地提取协调器。

希望这有帮助!