Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 循环中的CoreData更改关系_Objective C_Ios_Core Data_Relationship - Fatal编程技术网

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];
}