2012-09-11 7 views
3

나는이 같은 간단한 모델을 가지고 :CoreData 변화 관계는

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.'

내 질문은 : 나는 내 항목의 범주를 변경할 수있는 방법 고리?

+1

나는 여기 NSSet이 정렬되어 있지 않다는 것을 생각한다. NSArray에 콜렉션을두고 루프를 반복 해 보라. – ggfela

+1

@ggfela 귀하는 올바른 생각을 갖고 있지만 잘못된 이유가 있습니다. 설명을 위해 내 대답을보십시오. –

답변

3

greenCategory.items과 같은 컬렉션을 변경할 수 없다는 점이 문제입니다. 컬렉션에서 항목의 카테고리를 변경할 때 수행중인 작업입니다. 당신이해야 할 일은 별도의 콜렉션을 만들고 대신에 루프를 만드는 것입니다.

NSArray *greenCategoryItemsArray = [greenCategory.items allObjects]; 

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

그것은 빨랐다! 나는 ist를 벌써 시험했다. 그리고 그것은 매력처럼 일했다! 감사! – madcat