我目前正在解决Core Data的一些问题。 我在自己的商店中有一个用户模型,我没有任何控制权,因为它附带了一个框架。此模型的持久性存储协调器,托管对象模型和上下文会自动创建,无法触及。其中,此模型具有单个用户实体
另一方面,我有一个带有属性实体的属性模型,我可以完全控制它。在那里,我存储了另一个商店中某些用户实体的属性。用户和属性实体都具有类似于外键的 id 属性。 该模型具有自己的持久存储协调器,托管对象模型和上下文。
我现在想要的是将关联的用户实体作为属性实体的属性,这样我就可以绑定到与{{类似的关键路径1}}(我知道在使用获取的属性时myproperty可能是一个数组)。
但是,由于不支持跨店关系,我想通过 Fetched Properties 使用弱关系。那个只需要匹配两个相应的 id 属性。我在Xcode中为用户创建了一个Fetched Property,在我的属性实体的类文件中创建了所需的访问者(正如在其他问题中建议的那样,我正在处理返回的值)将获取的属性作为数组)。
但是,我无法在Xcode中为Fetched Property设置目标实体,因为目标实体位于完全不同的存储中。我是否还必须在属性商店中定义用户实体?如果是这样,Core Data如何知道该实体不是从我的属性存储中获取而是从用户存储中获取?
有些线程提到了使用配置,但我找不到任何文档,而不是提到“使用配置”。
有人可以告诉我如何设置跨存储提取的属性吗? #
答案 0 :(得分:0)
您可以使用多个共享相同数据模型的持久存储:
// 1. Add "static", read-only store [coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"your static configuration name goes here..." URL:storeUrl options:@{ NSReadOnlyPersistentStoreOption: @(YES), NSInferMappingModelAutomaticallyOption : @(YES) } error:&error]; // 2. Add "dynamic", writable content [coordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"your dynamic configuration name goes here..." URL:storeUrl options:@{ NSMigratePersistentStoresAutomaticallyOption: @(YES), NSInferMappingModelAutomaticallyOption : @(YES) } error:&error];