【问题标题】:Uniqueness of NSPersistentStoreUbiquitousContentNameKey for iCloud and Core DataiCloud 和 Core Data 的 NSPersistentStoreUbiquitousContentNameKey 的唯一性
【发布时间】:2013-11-11 01:55:33
【问题描述】:

在允许用户跨多个设备同步核心数据内容的应用中,我应该使 NSPersistentStoreUbiquitousContentNameKey 的唯一性如何?

即在拥有设备 ID 的意义上它应该是唯一的吗?因此,如果用户在他们的 iPhone 上运行一个应用程序,它有一个 NSPersistentStoreUbiquitousContentNameKey,如果他们在他们的 iPad 上运行它,还有另一个 NSPersistentStoreUbiquitousContentNameKey?

或者它只是在不同的应用程序之间是独一无二的? IE。如果我有 App A,它有一个 NSPersistentStoreUbiquitousContentNameKey,而 App B 有另一个 NSPersistentStoreUbiquitousContentNameKey?

【问题讨论】:

    标签: core-data icloud


    【解决方案1】:

    其目的是唯一标识用户帐户中的持久存储。因此,如果一个应用程序只有一个持久性存储(如待办事项列表可能),那么该应用程序的每次安装都可以共享该键的相同值,但如果您想拥有多个持久性存储,那么每个存储都需要一个唯一的这里的关键值。这有帮助吗?

    【讨论】:

    • 啊,我想我现在明白了。只是快速跟进。持久存储就像数据库吗?即如果我的应用程序只有一个核心数据 sqllite 数据库,那么它只使用单个值作为键?
    • 是的,没错。为了让对等设备找到同一个数据库的事务日志,它们都必须知道这个键值是什么。此外,您必须使用相同的 iCloud 容器 ID。
    • 是的,您会发现大多数核心数据 iCloud 示例都集中在单一商店的概念上。从单个商店到多个商店意味着要编写更多的底层代码,NSPersistentStoreUbiquitousContentNameKey 是该解决方案的关键。
    【解决方案2】:

    来自苹果文档:

    内容名称用于标识跨不同的商店 设备,以便交易与 可能存在该持久性存储文件的许多实例 设备。因此,您必须确保提供独特的 每个商店的名称,例如 UUID。

    https://developer.apple.com/library/IOs/releasenotes/DataManagement/RN-iCloudCoreData/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-26
      • 1970-01-01
      • 2012-12-15
      相关资源
      最近更新 更多