gpt4 book ai didi

ios - CoreData跨模型访问对象

转载 作者:行者123 更新时间:2023-12-01 16:57:18 25 4
gpt4 key购买 nike

目前,我有两个核心数据模型,即模型A和模型B。

模型A需要来自模型B的值。(模型A-> Entity1-> valueFromModelB)

目前,我正在执行获取请求并在Model A的NSObject子类中进行过滤。但是,这似乎不太有效,因为我需要经常更新此值。

做到这一点的最佳方法是什么?合并来自模型A和模型B的实体并在两者之间建立关系会更好吗?理想情况下,我想将它们分开,但是如果合并更容易,更有效,那么我可以走这条路。

最佳答案

从您的问题出发,不确定您是否已经考虑过预取选项来节省一些开销。根据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"]];

该代码获取员工和部门的信息,但是我不确定是否部门使用了不同的数据模型,是否可以使用NSPersistentStoreCoordinator之类的方法来使用它。

Apple的Core Data性能建议中的另一注是

每次访问持久性存储(每次获取)都会产生开销,这不仅会访问存储,还会将返回的对象合并到持久性堆栈中。如果可以将多个请求合并为一个单个请求,该请求将返回所需的所有对象,则应避免执行多个请求。您还可以最小化内存中的对象数量。

因此,如果理想情况下,如果您可以合并两个不同的Core Data模型,则将节省内存和往返次数以获取数据。

关于ios - CoreData跨模型访问对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10637608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com