태그가 지정된 개체의 배열을 통해 열거하려고합니다. 각 개체에는 열거 된 개체에 대한 올바른 엔터티를 가져 오기위한 조건 자로 사용하는 "태그"특성이있는 해당 핵심 데이터 엔터티가 있습니다. 아래 코드를 참조하십시오.
열거에서 엔티티를 업데이트하고 있기 때문에 이것은 몇 가지 문제를 일으키는 것으로 보이며 문제는 열거보다 가져 오기가 느리다는 것입니다. 이 배열을 통해 열거하고 가져 오기 항목을 올바르게 업데이트하려면 어떻게해야합니까?
[array enumerateObjectsUsingBlock:^(obj *SomeClass, NSUInteger idx, BOOL *stop){
currentEntityForEnumeratedObject = [targetVC fetchEntityForTag:obj.tag createIfNeccessary:NO error:nil];
currentEntityForEnumeratedObject.someAttribute = [NSNumber numberWithInt:obj.somePropertyOfObj];
}];
원칙적으로 열거하는 개체를 업데이트 할 수 없습니다. 로부터 문서 :
컬렉션이 변경 가능한 경우에도 빠른 열거 중에는 컬렉션을 변경할 수 없습니다. 루프 내에서 수집 된 객체를 추가하거나 제거하려고하면 런타임 예외가 생성됩니다.
또한 열거 형 루프에서 가져 오기를 수행하는 것이 차선책 인 것 같습니다. 오히려 모든 객체를 가져온 다음이를 반복하여 수정해야합니다. 특수 조건 자 구문을 사용하여 컬렉션에 특정 속성이있는 모든 레코드를 가져올 수 있습니다.
// make a collection of all the tags of the *SomeClass objects
NSArray *tags = [array objectForKeyPath:@"tag"];
// fetch all relevant records with this predicate
[NSPredicate predicateWithFormat:@"tag in %@", tags];
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다