2013-09-02 3 views
1

웹 서비스에서 가져온 주소록 연락처를 표시하는 데 사용되는 디스플레이 MOC가 있다고 가정 해 봅니다. 어딘가에 나는 사용자가 입력 한 쿼리가 주어진 웹 서비스를 검색하는 검색 기능을 가지고 있으며 디스플레이 MOC가 제공하는 디스플레이를 "오염"시키지 않도록 해당 객체를 스크래치 패드 MOC에 반입하고 저장합니다."스크래치 패드"에서 MOC가 변경 될 때 NSManagedObjects 업데이트 MOC

이제 사용자가 스크래치 패드 MOC에서 연락처를 수정한다고 가정 해 보겠습니다. 디스플레이 MOC에있는 모든 동등한 객체에 이러한 변경 사항을 동기화하고 싶습니다. 나는 그것이 이미 존재하지 않는다면, 변경된 객체가 디스플레이 MOC에 추가되는 것을 원하지 않는다. 그리고 나는 다른 방법으로 변경하기를 바란다. (사용자가 디스플레이 MOC의 컨택을 변경하면 스크래치 패드 MOC에서 변경해야하지만, 동등한 객체가 이미 존재하는 경우에만). 개체 업데이트 결과로 MOC에 개체가 추가되는 것을 원하지 않습니다. 스크래치 패드 MOC를 디스플레이 MOC의 자식으로 만드는 것은 잘못된 솔루션처럼 들립니다.

다른 MOC의 오브젝트 보완을 변경하지 않고도 다른 MOC의 동일한 오브젝트가 동기화 상태를 유지하는 최상의 패턴은 무엇입니까?

답변

1

이것은 NSManagedObjectContextDidSaveNotification의 목적입니다. 컨텍스트에서 변경 사항이 저장 될 때마다 변경 사항에 대한 정보와 함께이 알림이 자동으로 게시됩니다. 이 알림을 준수하고 mergeChangesFromContextDidSaveNotification: 메서드를 사용하면 변경 내용을 하나의 컨텍스트에 저장하고 다른 컨텍스트로 병합 할 수 있습니다.

+0

하나의 MOC에는 존재하지 않지만 다른 MOC에는 존재하지 않는 객체도 병합하지 않습니까? MOC에 존재하는 객체 만 병합하고 싶습니다. 객체가 다른 MOC에 존재하지 않는다면, 병합을 원하지 않습니다. – leftspin

+0

다른 MOC가 다른 영구 저장소 파일을 사용합니까? 왜냐하면 그렇지 않다면 의미없는 질문 일 것입니다. 개체는 영구 저장소에 존재하며 MOC는 수행하는 가져 오기 또는 통과하는 관계에 따라로드 할 수도 있고로드하지 않을 수도 있습니다. –

+0

예, 스크래치 패드 MOC는 메모리 내장 PSC에 연결됩니다. 내 질문은 두 MOC에 존재하지만 둘 중 하나에서만 존재하는 객체를 동기화하지 않는 객체를 동기화하는 것과 관련이 있습니다. 내가 사용한 유스 케이스를 고려할 때 이유가 무의미하다고 생각하는 이유가 확실하지 않습니다. – leftspin