我有一个像这样的简单模型:
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', reason: '* Collection <_NSFaultingMutableSet: 0x8a0ef70> was mutated while being enumerated.'
我的问题是:如何在循环中更改项目中的类别?
最佳答案
问题是你不能改变(变异)像你的greenCategory.items
这样的集合,当你在它上面循环时,这就是你在改变类别时所做的该集合中的项目。您需要做的是创建一个单独的集合并对其进行循环。
NSArray *greenCategoryItemsArray = [greenCategory.items allObjects];
for (Item *aItem in greenCategoryItemsArray) {
[aItem setCategory:blueCategory];
}
关于objective-c - CoreData循环改变关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12364963/