假设我有一个实体'员工'与多个关系'部门'到另一个实体'部门'。如果我有一个Employee对象的实例,而且department集合当前是一个错误,那么获取部门数量的内存最有效的方法是什么?
两个明显的选择是:
1)致电[myEmployee.departments count];
2)构造一个fetchRequest,只返回匹配'employee'关系指向我的employee对象的Department对象,然后调用countForFetchRequest:
除了内存使用之外,这些方法中的一种方法是否会比其他方法快得多?
答案 0 :(得分:0)
除非您有relationshipKeyPathsForPrefetching,否则不会获取关系。
但是,我最好的建议是始终以最直接的方式实施您的解决方案,然后解决性能问题。众所周知,人类在预测性能问题时表现不佳。
一种非常易于使用的工具是Instruments,它包含在Xcode中。
您可以使用这两种方法轻松运行测试,并实际比较数字,而不是仅仅采纳一些陌生人的意见。
答案 1 :(得分:0)
第一:当调用关系时,对象被加载为“fault”,因此性能非常好。
第二:如果你使用countForFetchRequest方法,请求将是:
int[]
因此CoreData必须检查每个部门以查看员工。在练习中更慢。