코어 데이터는 오브젝트를 지연로드하며 참조를 시도하자마자 오브젝트를 가져옵니다. 그러나 나는이 계획에 몇 가지 문제가 발생했습니다.코어 데이터 지연로드 문제
목표 (집합의 개체가 아직로드되지 않았기 때문에) 관계 (집합)의 개체에 대한 C 2.0 빠른 열거 형은 실패 할 수 있으며 핵심 데이터가 관리하는 개체의 멤버를 만질 때까지 awakeFromFetch가 호출되지 않습니다 . 예를 들어
, I와 같은 NSManagedObject의 서브 클래스에 관계가있는 경우 :
@property (retain) NSSet* clips;
즉시 해당 오브젝트의 인스턴스를 인출 한 후 I는 이와 같은 빠른 열거를 사용하려고하는 경우 :
for (PClip* clip in self.clips) {
// do something with the clip
}
루프 본문이 실행되지 않습니다. 디버거에서 클립 세트 (런타임에 _NSFaultingMutableSet의 인스턴스)가 처음에는 비어 있음을 볼 수 있습니다.
또는 내가 영속 상태에서 파생 된 클립 객체의 비 영구적 인 구성원이 있다고 :
@property (retain) NSString* filename
내가 awakeFromFetch 사용 방법이 동기화를하지만, awakeFromFetch 일부 지속 멤버까지 호출되지 않습니다 객체가로드되기 전에 일부 코드가이 비 영구적 값에 액세스하려고하면 아직 정의되지 않습니다 (즉, nil이됩니다).
페치 요청에서 setReturnsObjectsAsFaults : 메서드를 사용하면 도움이되지 않습니다. 페치 된 객체에 첨부 된 객체 트리를 모두 가져 오도록 강제하는 것은 아닙니다.
개체를 작업하기 전에 개체를로드하는 가장 좋은 방법은 무엇입니까? 빠른 열거로 인해 개체 집합이로드되지 않는 이유는 무엇입니까?
나중에 "{}"편집기 컨트롤을 사용하여 질문에 맞게 코드의 형식을 지정하십시오. :-) –