Objective c 循环中的CoreData更改关系
我有这样一个简单的模型:Objective c 循环中的CoreData更改关系,objective-c,ios,core-data,relationship,Objective C,Ios,Core Data,Relationship,我有这样一个简单的模型: item category --> category <--- items 我想要实现的是将类别为绿色的所有项目更改为蓝色 以下代码仅产生一个错误: 已经存在两类: blueCategory greenCategory for (Item *aItem in [greenCategory.items]) { [aItem setCategory:blueCategory]; } 错误: “NSGenericeException
item category --> category
<--- items
我想要实现的是将类别为绿色的所有项目更改为蓝色
以下代码仅产生一个错误:
已经存在两类:
blueCategory
greenCategory
for (Item *aItem in [greenCategory.items]) {
[aItem setCategory:blueCategory];
}
错误:
“NSGenericeException”,原因:“*集合在枚举时发生了变异。”
我的问题是:如何在循环中更改项目中的类别?问题是,在循环过程中,无法更改(变异)像
greenCategory.items
集这样的集合,这就是更改该集合中项目的类别时所做的操作。您需要做的是创建一个单独的集合,并在其上循环
NSArray *greenCategoryItemsArray = [greenCategory.items allObjects];
for (Item *aItem in greenCategoryItemsArray) {
[aItem setCategory:blueCategory];
}
我认为这里的问题是NSSet是无序的,试着把你的收藏放在NSArray中,然后在上面循环。@ggfela你的想法是正确的,但原因是错误的。请参阅我的答案以获得澄清。这太快了!我已经测试过ist了,它就像一个符咒!谢谢
NSArray *greenCategoryItemsArray = [greenCategory.items allObjects];
for (Item *aItem in greenCategoryItemsArray) {
[aItem setCategory:blueCategory];
}