Core data iCloud和核心数据的NSPersistentStoreUbiquitousContentNameKey的唯一性

Core data iCloud和核心数据的NSPersistentStoreUbiquitousContentNameKey的唯一性,core-data,icloud,Core Data,Icloud,在允许用户跨多台设备同步核心数据内容的我的应用程序中,我应该使NSPersistentStoreUbiquitousContentNameKey具有多大的唯一性 即,在具有设备ID的意义上,它是否应该是唯一的?因此,如果用户在iPhone上运行应用程序,它有一个NSPersistentStoreUbiquitousContentNameKey,如果用户在iPad上运行应用程序,它有另一个NSPersistentStoreUbiquitousContentNameKey 或者它在不同的应用程序之间

在允许用户跨多台设备同步核心数据内容的我的应用程序中,我应该使NSPersistentStoreUbiquitousContentNameKey具有多大的唯一性

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


或者它在不同的应用程序之间是唯一的?也就是说,如果我有应用程序A,它有一个NSPersistentStoreUbiquitousContentNameKey,而应用程序B有另一个NSPersistentStoreUbiquitousContentNameKey?

其目的是唯一地标识用户帐户中的持久存储。因此,如果一个应用程序只有一个持久存储(就像待办事项列表一样),那么该应用程序的每个安装都可以共享该密钥的相同值,但是如果您希望有多个持久存储,那么每个持久存储都需要一个唯一的密钥值。这有帮助吗?

来自apple文档:

内容名称用于跨不同的存储区标识存储区 设备,以便事务与 该持久存储文件在所有数据库中可能有许多实例 这些设备。因此,您必须确保提供唯一的 每个存储的名称,例如UUID


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