如何设置通过to-many关系检索的对象的获取限制?

时间:2011-07-17 14:31:06

标签: objective-c cocoa macos core-data

假设我的UserFile在我的核心数据堆栈中有一个名为files的多对多关系。在我的代码中,我将用户的文件加载到NSArray并遍历数组,在用户的文件上执行各种功能。我有一个用户拥有7,000个文件。我相信我的代码可以处理用户文件的较小“块”而不是一次整个7,000块。我知道有一个fetchLimit可用(并且在SQLLite存储中只会检索fetchLimit设置的数量) - 所以,我应该忽略files关系而是进行有限的提取使用setFetchLimit?建议是最受欢迎的,谢谢!

如果有人有示例代码可以实现我认为我需要的东西,那就更好了。

1 个答案:

答案 0 :(得分:1)

关系不是提取,因此提取限制不适用。您可以使用具有提取限制的fetched属性,但是您将失去关系的优势。

但是,我非常怀疑你需要做什么。除非你已经完成测试并发现大关系导致了问题,否则没有理由期望它会发生。 Core Data有很多技巧可以节省在幕后使用的资源。我认为一个大的简单关系实际上不太可能导致问题。核心数据不会盲目地加载到7,000个实例化对象中。

在添加额外复杂性之前进行测试。记住Donald Knuths的'axoim “过早优化是所有邪恶的根源。”燃烧时间来解决你实际上不会实际存在的问题是一种浪费,并增加了不必要的和危险的复杂性。