1

如果另一个设备上的核心数据中的条目发生更改,NSLog 消息会显示它已注意到更改,但NSPersistentStoreDidImportUbiquitousContentChangesNotification没有被调用。直到在我的第一台设备上保存它才知道更新我的表格视图。

这是我的代码:

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

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

4

2 回答 2

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 无法正常工作的情况。

于 2012-07-26T15:29:21.297 回答
1

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

__weak NSPersistentStoreCoordinator *psc = self.context.persistentStoreCoordinator;

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(iCloudUpdates:)
                                             name:NSPersistentStoreDidImportUbiquitousContentChangesNotification
                                           object:psc];
于 2014-06-23T05:30:16.537 回答