Apple의 CoreDataBooks
샘플 응용 프로그램을 바탕으로 보조 관리 대상 개체 컨텍스트로 데이터를 가져 와서 기본 관리 개체에 병합하기위한 기초로 사용하고 있습니다. 문맥.다른 컨텍스트의 개체 사이에 'xyz'관계 설정 시도가 잘못되었습니다.
내가 가져 오는 데이터는 Owner
엔티티 ("소유자")와 일대일 관계가있는 Book
엔티티입니다. Owner
엔티티는 Book
("books"라고 함)과 다 대다 관계입니다. Book N
통해
<Owner>
<Name>alexpreynolds</Name>
<ID>123456</ID>
</Owner>
<Books>
<Book>Book One</Book>
<Book>Book Two</Book>
...
<Book>Book N</Book>
</Books>
Book One
하나 Owner
("alexpreynolds, 123456"
)와 연관되어
내 데이터는 XML 형식의 문서이다.
Owner
인스턴스와 Book
인스턴스로 구성된 NSMutableSet
인스턴스로 구문 분석하고 있습니다.
처음 저장하려고하면 잘 저장되고 병합 된 데이터가 테이블보기에 나타납니다.
그러나 두 번째 저장시 XML 내용에 새 책이 포함되어 있으면 작동하지 않습니다.
여기 무슨 일이야 :
그때 새로운 Book
를 포함하는 XML 문서를로드하지 이미 기본 관리 개체 컨텍스트한다. 새로운 Book
은 다른 Book
과 연결된 것과 동일한 Owner
을 사용하고 있습니다.
나는 (나는 이미 내 기본 관리 개체 컨텍스트에있는)이 독특한 Owner
관리되는 개체를 골라 루틴 및 기본 MOC에서 발견 하지있는 독특한 Book
있습니다.
여기에서 보조 MOC에 새로운 Book
개체를 만들고 주체 MOC에서 찾은 고유 Owner
을 가리 키도록 해당 "owner
"관계를 설정했습니다. 나는 아직도 차에서 기존 Owner
와 연결할 수 있도록 내가, 보조 MOC에서 새로운 Book
개체를 만들려면 어떻게해야합니까
*** Terminating app due to uncaught
exception 'NSInvalidArgumentException',
reason: 'Illegal attempt to establish a
relationship 'owner' between objects in
different contexts
(source = <Book: 0x7803590>
(entity: Book; id: 0x7802ae0 <x-coredata:///
Book/t527F06B2-3EB5-47CF-9A29-985B0D3758862>
; data: {
creationDate = 2009-10-12 06:01:53 -0700;
name = nil;
nameInitial = nil;
operations = (
);
owner = nil;
type = 0;
}) ,
destination = <Owner: 0x78020a0> (entity:
Owner; id: 0x3a56f80 <x-coredata://043AF2F0-1AD0-
4078-A5E8-E9D7071D67D1/Owner/p1> ; data: {
books = "<relationship fault: 0x7801bf0 'books'>";
displayName = alexpreynolds;
ownerID = 123456;
}))'
: 내가 저장하면
, 나는 다음과 같은 오류가 MOC?
감사합니다. 백그라운드 GCD 스레드에서 코어 데이터로 작업하고 있었기 때문에 백그라운드 NSManagedObject를 가지고 있어야만했습니다. 메인 객체 인 NSManagedObject를 사용하여 부모 객체를 삽입하는 것을 잊어 버렸습니다! 어쨌든 감사합니다! :) – runmad