그래서 우리는 두 개의 NSManagedObjectContext가있는 app에서 context1과 context2를 호출 할 수 있습니다. customId = 1 인 객체가 context2에 삽입되고 context2가 절대로 저장되지 않는 상황이 있습니다. 미래의 어떤 시점에서 객체는 custom1 = 1과 함께 context1에 추가됩니다. 그런 다음 context1이 저장되고 완료 알림이 수신되면 재미가 시작됩니다! 우리는을 통해 context2으로 저장에서 변경 사항을 병합하려고이 잘 작동CoreData 병합 삽입
[context2 mergeChangesFromContextDidSaveNotification:notification];
, 그것은 병합을 수행하고하는 맞춤 = 1 context2 모두에서 두 개체가있다. 그러나, 내가 원하는 것은, 병합시, 두 개체가 동일한 customId를 가지므로 삽입을 수행하는 대신 기존 개체를 업데이트하고 내부적으로 두 개체를 동일하게 만듭니다 (또는 그 효과 : /). 나는 이것이 isEqual과 해시를 오버라이드함으로써 가능할 수 있다고 생각했지만 이것은 NSManagedObjects에 대해 엄격하게 금지되어있다!
또 다른 생각은 validateInsert :를 사용하는 것이었고 새로운 객체를 삽입하려고 할 때 값을 복사하지 않고 값을 복사한다고 알리는 것입니다. 그러나 이것은 또 다른 문제점을 야기합니다. 우리는 이제 하나의 객체를 가진 영속 저장소를 가지고 있고 context2는 다른 객체를 가지고있다. 그런 다음 context1에서 객체를 삭제하고 해당 변경 사항을 저장하여 영구 저장소에서 객체를 제거해야합니다. 그러나 context2를 저장하지 않으므로 (이상하게 보일 수 있지만 유효한 이유가 있습니다 ... 약속드립니다! 그 객체는 절대로 저장되지 않습니다.
우리는 기본적으로 CoreData에 두 개의 삽입이 이루어진 후에 실제로 동일한 객체라고 가정 할 수 있기를 원합니다! 우리가 어떻게 할 수 있을지에 대한 아이디어가 있다면 누구든지이 시점에서 도움을 청할 수 있습니다!
쿨한 느낌이었습니다. 답장을 보내 주셔서 감사합니다! –