同步核心数据时,是不是需要调用 URLForUbiquityContainerIdentifier: ?

Posted

技术标签:

【中文标题】同步核心数据时,是不是需要调用 URLForUbiquityContainerIdentifier: ?【英文标题】:When syncing Core Data, is a call to URLForUbiquityContainerIdentifier: needed?同步核心数据时,是否需要调用 URLForUbiquityContainerIdentifier: ? 【发布时间】:2014-05-01 17:21:21 【问题描述】:

我有一个将 Core Data 同步到 iCloud 的应用程序。无论我是否致电URLForUbiquityContainerIdentifier:,它似乎都运行良好。

在所有情况下都需要调用URLForUbiquityContainerIdentifier: 吗? (如果没用,这将有助于我不要调用它)。

Tom 要求的更多细节:

我没有对 URLForUbiquityContainerIdentifier: 的结果做任何事情:(这是默认应用程序容器的 URL,我用“nil”作为参数调用)。我只是关注Apple's documentation 声明

虽然 ubiquityIdentityToken 方法会告诉您用户是否是 登录到 iCloud 帐户,它不会准备 iCloud 供以下用户使用 你的应用程序。在 ios 中,通过调用使您的无处不在的容器可用 NSFileManager 方法 URLForUbiquityContainerIdentifier: 对于每个 应用程序的普遍容器。

所以这正是我所做的。

但如果我不这样做,我看不到对 Core Data 同步的任何影响(很明显,如果我不这样做,Core Data 仍然可以很好地同步 - 或者至少看起来如此)。

所以我想知道其他人的经验。如果不需要该调用(例如,因为 Core Data 可能自己管理自己的容器),那么最好忘记它。由于它必须从后台线程中完成,这会导致大量代码徒劳无功。

【问题讨论】:

如果您的问题包括您如何调用此方法以及您对结果做了什么(如果有的话),那就太好了。 【参考方案1】:

您引用的文档对于 iOS 7 已过时,其中包括对 Core Data 的 iCloud 系统的大量内部更改。其中,当您使用options 字典中的 iCloud 键调用addPersistentStoreWithType:configuration:URL:options:error: 时,它会在内部为您调用URLForUbiquityContainerIdentifier:。因此,如果您仅将 iCloud 与 Core Data 一起使用,则通常不需要自己调用此方法。

如果您仍然支持 iOS 6(如果您还使用 iCloud,则不推荐),那么您需要自己致电 URLForUbiquityContainerIdentifier:

有关 iOS 7 中 Core Data + iCloud 更改的更多详细信息,我推荐 WWDC 2013 会议 207,“Core Data 中的新功能”。

【讨论】:

以上是关于同步核心数据时,是不是需要调用 URLForUbiquityContainerIdentifier: ?的主要内容,如果未能解决你的问题,请参考以下文章

RestKit - 仅在第二次调用时将缓存保存到核心数据

当应用有互联网连接时,将离线核心数据与服务器同步

“异步”调用图中的最后一次调用是不是需要同步?

将核心数据与 iCloud 同步 - 不包括实体

从核心数据同步数据

Cloudkit + 核心数据不同步