【问题标题】:CoreData change relationships in a loopCoreData 循环更改关系
【发布时间】:2012-09-11 07:40:32
【问题描述】:

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

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',原因:'* Collection <_nsfaultingmutableset:> 在枚举时发生了变异。'

我的问题是:如何在循环中更改项目中的类别?

【问题讨论】:

  • 我认为这里的问题是 NSSet 是无序的,请尝试将您的集合放入 NSArray 并对其进行循环。
  • @ggfela 你的想法是对的,但出于错误的原因。请参阅我的答案以获得澄清。

标签: objective-c ios core-data relationship


【解决方案1】:

问题在于,当您循环访问它时,您无法更改(变异)像 greenCategory.items 集合这样的集合,这就是您在更改该集合中项目的类别时所做的事情。您需要做的是创建一个单独的集合并对其进行循环。

NSArray *greenCategoryItemsArray = [greenCategory.items allObjects];

for (Item *aItem in greenCategoryItemsArray) {
    [aItem setCategory:blueCategory];
}

【讨论】:

  • 太快了!我已经测试了 ist,它就像一个魅力!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-17
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
相关资源
最近更新 更多