在Core Data中设置数千个对象之间关系的最有效方法是什么?

时间:2012-05-04 13:20:48

标签: iphone cocoa-touch core-data

假设我已经插入了10.000个Book实体和10.000个Author实体,并且需要在它们之间建立一对一的关系。两个实体都有一个名为bookID的属性。我这样做:

  1. 获取所有图书,按bookID排序
  2. 获取所有作者,按bookID排序
  3. 枚举books数组,如果是currentBook.bookID == currentAuthor.bookID,则currentBook.author = currentAuthor。对所有书籍重复此操作。在刚刚设置了关系的第1000本书中,保存上下文(否则会消耗更多的内存)。
  4. 我的问题是内存分配过火了。我该如何限制?我尝试了[fetchRequest setBatchSize:],setFetchLimit:和setFetchOffset:,没有运气。

1 个答案:

答案 0 :(得分:0)

我认为您没有正确地概念化您的数据模型。属性“bookID”不应该真正位于作者实体中。在两种方式中建立一对一的关系似乎也很奇怪。更有可能你想要从作者到书本之间建立一对多的关系(作者可以写多本书),甚至可能在相反的方向上建立一对多关系(一本书可能有多位作者) ,虽然这取决于你)。