NSPersistentStoreDidImportUbiquitousContentChangesNotification未通知

时间:2012-07-21 18:48:42

标签: iphone objective-c ios core-data icloud

如果在另一台设备上的核心数据中更改了条目,则NSLog消息显示它已注意到更改,但未调用NSPersistentStoreDidImportUbiquitousContentChangesNotification。直到我的第一台设备上保存才能知道更新我的tableview。

这是我的代码:

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

有人知道为什么这可能不起作用吗?

2 个答案:

答案 0 :(得分:3)

第一个选项: 如果您的问题是更新两个设备的延迟,这是正常行为,Apple不保证更新时间,但通常很快。

如果另一方面问题是没有调用iCloudUpdates方法,请确保签名正确,应该是:

-(void)iCloudUpdates:(NSNotification*)notification {
  // do your stuff here
}

第二种选择:  在撰写本文时,iOS 5在iCloud和CoreData方面存在很大问题,我最近发布的应用程序没有支持iCloud。

如果您想了解正在进行的操作,请将以下内容转为登录CoreData和iCloud:

-com.apple.CoreData.SQLDebug 1
-com.apple.coredata.ubiquity.logLevel 3

在您的计划管理器中,在run-> arguments选项卡下。

如果您在“目标”设备中看到一些奇怪的错误,那就是iCloud无法进行操作。

答案 1 :(得分:1)

我认为代码的问题在于,在“addObserver”中你将对象设置为nil。该对象应该是您的persistentStoreCoordinator,如下所示。

__weak NSPersistentStoreCoordinator *psc = self.context.persistentStoreCoordinator;

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(iCloudUpdates:)
                                             name:NSPersistentStoreDidImportUbiquitousContentChangesNotification
                                           object:psc];