同步核心数据时,是不是需要调用 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: ?的主要内容,如果未能解决你的问题,请参考以下文章