3

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

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',原因:' * Collection <_NSFaultingMutableSet: 0x8a0ef70> 在枚举时发生了变异。'

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

4

1 回答 1

3

问题是当你循环遍历它时,你不能像你的集合那样改变(变异)一个集合greenCategory.items,这就是你在改变集合中项目的类别时所做的事情。您需要做的是创建一个单独的集合并对其进行循环。

NSArray *greenCategoryItemsArray = [greenCategory.items allObjects];

for (Item *aItem in greenCategoryItemsArray) {
    [aItem setCategory:blueCategory];
}
于 2012-09-11T07:50:46.977 回答