如果在另一台设备上的核心数据中更改了条目,则NSLog消息显示它已注意到更改,但未调用NSPersistentStoreDidImportUbiquitousContentChangesNotification
。直到我的第一台设备上保存才能知道更新我的tableview。
这是我的代码:
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(iCloudUpdates:)
name:NSPersistentStoreDidImportUbiquitousContentChangesNotification
object:nil];
有人知道为什么这可能不起作用吗?
答案 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];