目前,我有两个核心数据模型,模型A和模型B.
模型A需要模型B中的值。(模型A - >实体1 - > valueFromModelB)
目前,我正在执行一个获取请求并在模型A的NSObject子类中进行过滤。但是,这似乎不是很有效,因为我需要经常更新这个值。
实现这一目标的最佳方法是什么?合并模型A和模型B中的实体并在两者之间建立关系会更好吗?理想情况下,我希望将这些分开,但如果合并更容易,更有效,那么我可能会走这条路。
答案 0 :(得分:1)
从你的问题来看,不确定你是否已经看过预取的选项以节省一些开销。根据Core Data Documentation,这是一个用于预取的代码片段。
NSManagedObjectContext *context = /* get the context */;
NSEntityDescription *employeeEntity = [NSEntityDescription
entityForName:@"Employee" inManagedObjectContext:context];
NSFetchRequest *request = [[NSFetchRequest alloc] init];
[request setEntity:employeeEntity];
[request setRelationshipKeyPathsForPrefetching:
[NSArray arrayWithObject:@"department"]];
代码获取员工和部门信息,但我不确定的是,如果Department处于不同的数据模型中,是否可以使用类似NSPersistentStoreCoordinator的东西来使用它。
Apple的Core Data性能建议的另一个注意事项是
持久性存储的每次往返(每次获取)都会产生开销,无论是访问存储还是将返回的对象合并到持久性堆栈中。如果您可以将它们组合成一个将返回所需对象的单个请求,则应避免执行多个请求。您还可以最小化内存中的对象数量。
因此,如果理想情况下,如果您可以合并两个不同的Core Data模型,那么将节省内存和往返以获取数据。
答案 1 :(得分:-1)
在同一个dataModel&中创建不同的实体创建实体之间的关系。这会更快更快简单 。 :)