CoreData在循环中改变关系

时间:2012-09-11 07:40:32

标签: objective-c ios core-data relationship

我有一个这样的简单模型:

item  category --> category 
      <--- items

以及以下数据:

item A -> category blue
item B -> category blue
item C -> category blue
item D -> category green
item E -> category green

我想要实现的是将类别为绿色的所有项目更改为蓝色。

以下代码只产生错误:

已经存在两个类别:

blueCategory
greenCategory


for (Item *aItem in [greenCategory.items]) {
    [aItem setCategory:blueCategory];
}

错误:

  

'NSGenericException',原因:' * 集合&lt; _NSFaultingMutableSet:0x8a0ef70&gt;在被列举时被突变。'

我的问题是:如何更改循环中项目的类别?

1 个答案:

答案 0 :(得分:3)

问题是当你循环它时,你不能像你的greenCategory.items集一样改变(变异)一个集合,这就是当你改变那个项目的类别时你正在做的事情。组。你要做的就是创建一个单独的集合并在其上循环。

NSArray *greenCategoryItemsArray = [greenCategory.items allObjects];

for (Item *aItem in greenCategoryItemsArray) {
    [aItem setCategory:blueCategory];
}