objective-c - CoreData循环改变关系

标签 objective-c ios core-data relationship

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

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/

相关文章:

iphone - 如何正确编码一些文本

iphone - 3G网络中NSPOSIXErrorDomain Code=12 "Cannot allocate memory"

ios - 数据未保存在 sqlite 核心数据库中

iphone - xcdatamodel 内容消失

iphone - iOS 4 核心数据......多任务处理有什么变化吗?

ios - 如何从 iPhone 视频录制中实时捕捉逐帧图像

iphone - 尝试在管理器中指定开发团队时 Xcode 崩溃

ios - View Controller 之间的自定义转换,包括导航栏

ios - XCode:是否可以创建可重用的堆栈 View ?

ios - 使用 segue 中的参数调用函数