2010-08-11 4 views
4

나는 모델 클래스에 UITableView 결과 세트를 다운로드하는 상당히 간단한 iPhone 앱과이 변경 사항을 준수하도록 설정된보기 컨트롤러 using KVO을 가지고있다.KVO 변경 사항을 병합하는 방법은 무엇입니까?

이 시스템은 결과가 나올 때마다 NSMutableArray를 하나씩 추가한다는 점을 제외하고는 (모든 곳에서 코드를 분산시키는 것보다 훨씬 효과적입니다.) 이것은 수많은 KVO 알림을 발생시키고, 내 로우 애니메이션을 비틀 거리는 방식으로 비틀 거리게 만듭니다. 특정 KVO 알림을 병합하여 변경 사항을 한꺼번에 처리하여 단일 색인 세트로 단일 KVO 알림을 제공 할 수있는 방법이 있습니까?

-addObjectsFromArray을 호출하여 새로운 결과를 일괄 적으로 추가하려고하면 필요한 KVO 알림이 전송되지 않으므로이 방법이 관찰 된 방법 중 하나 여서는 안됩니다. 맞습니까? will/didChangeValueForKey 호출로 변경 사항을 래핑하고 적절한 인덱스 세트를 생성하여이 기능을 직접 처리하는 것이 더 좋을까요?

답변

3

정확히 같은 문제가 있습니다. ,

-insert<Key>:atIndexes: and -remove<Key>AtIndexes 
(corresponding to the NSMutableArrayinsertObjects:atIndexes: and removeObjectsAtIndexes: methods) 

희망이 도움이 : 난 아직 적절한 해결책을 해달라고하지만 당신은 KVO programming guide이 페이지에 대한 몇 가지 답을 찾을 수 있습니다

당신은 한 번에 객체 배열에 severals를 추가하려면 다음 메소드를 구현 할 수 있습니다 Vincent.

+0

하 석을, 그게 내가 요구하지만 내가 필요로 완전히 무엇 무엇 아니에요! 감사! 새 데이터 세트를 받으면 해당 메서드를 사용하여 백업 NSMutableArray에 추가합니다 (이 예제에서'videos'는 새 데이터가있는 NSArray입니다) : '[self insertItems : videos atIndexes : [NSIndexSet indexSetWithIndexesInRange : NSMakeRange (0, [videos count])]] ' –

+0

문서에 대한 현재 링크 : https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/KeyValueCoding/Articles/SearchImplementation.html#//apple_ref/doc/uid/20000955-CJBBBFFA – Demitri

1

두 번째 질문에 대해서는 -addObjectsFromArray을 사용하고 있습니다.이 방법은 KVO 알림을 실제로 발생시키지 않습니다. 저에게 문제의 방법은 removeAllObjects입니다. 또는 대안으로서, array accessors를 구현하는 것 외에, 당신은 다음을 수행 할 수

[[self mutableArrayValueForKey:@"key"] removeAllObjects]; 
관련 문제