我有一个这样的简单模型:
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;在被列举时被突变。'
我的问题是:如何更改循环中项目的类别?
答案 0 :(得分:3)
问题是当你循环它时,你不能像你的greenCategory.items
集一样改变(变异)一个集合,这就是当你改变那个项目的类别时你正在做的事情。组。你要做的就是创建一个单独的集合并在其上循环。
NSArray *greenCategoryItemsArray = [greenCategory.items allObjects];
for (Item *aItem in greenCategoryItemsArray) {
[aItem setCategory:blueCategory];
}