3

私はこのような単純なモデルを持っています:

item  category --> category 
      <--- items

および以下のデータ:

item A -> category blue
item B -> category blue
item C -> category blue
item D -> category green
item E -> category green

私が達成したいのは、カテゴリが緑から青になっているすべてのアイテムを変更することです。

次のコードはエラーのみを生成しました:

2つのカテゴリがすでに存在します。

blueCategory
greenCategory


for (Item *aItem in [greenCategory.items]) {
    [aItem setCategory:blueCategory];
}

エラー:

'NSGenericException'、理由:' *コレクション<_NSFaultingMutableSet:0x8a0ef70>は、列挙中に変更されました。

私の質問は、ループ内のアイテムのカテゴリを変更するにはどうすればよいですか?

4

1 に答える 1

3

問題は、ループしている間はセットのようなコレクションを変更(変更)できないことgreenCategory.itemsです。これは、そのセット内のアイテムのカテゴリを変更するときに行うことです。あなたがしなければならないことは、別のコレクションを作成し、代わりにそれをループすることです。

NSArray *greenCategoryItemsArray = [greenCategory.items allObjects];

for (Item *aItem in greenCategoryItemsArray) {
    [aItem setCategory:blueCategory];
}
于 2012-09-11T07:50:46.977 に答える