0

두 개의 프로세스가 동일한 영구 저장소와 통신하고 있습니다. 한 프로세스에서 컨텍스트를 저장하고 분산 된 알림을 게시합니다. 다른 프로세스는 분산 알림을보고 해당 데이터를 다시 가져 오지만 이전 데이터는 계속받습니다. 다른 프로세스가 상점에서 올바른 데이터를 가져 오기 위해 수행해야 할 일종의 "플러싱 (flushing)"이 있습니까?다른 프로세스가있는 NSManagedObjectContext

편집 : 따라서 데이터가 올바르게 플러시 된 것으로 나타났습니다. NSManagedObjects에는이를 수행하는 데 사용하는 "refreshObject : mergeChanges"메서드가 있습니다. 이 문제는 타이밍 관련 것으로 보입니다. 두 개의 프로세스 A와 B가 있다고 가정 해 보겠습니다. 프로세스 A는 기본 프로세스이며 데이터베이스에 저장합니다. 그런 다음 프로세스 B는 데이터베이스에 저장을 수행하고 프로세스 A에 통지를 전송하고 프로세스 A는 새 데이터를 페치합니다. 프로세스 A의 저장과 프로세스 B의 저장이 너무 가깝다면 새로 고침을해도 프로세스 A가 이전 데이터를 가져 오는 것으로 나타났습니다. 두 저장 사이에 시간이 필요하면 올바르게 작동합니다.

분명히 이것은 데이터가 실제로 데이터베이스에 저장되기 전에 알림이 전송되는 것과 같은 일종의 경쟁 조건처럼 보이지만 알림은 관리되는 개체의 didSave 메서드에서 전송됩니다. 컨텍스트가 이미 저장되었습니다.

답변

1

다른 컨텍스트간에 영구 저장소 조정자의 올바른 값을 관리, 가져오고 통신하려면 merge policy 개념을 확인해야합니다. 여기

-> 문제를 해결해야

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreData/Articles/cdChangeManagement.html#//apple_ref/doc/uid/TP30001201-CJBDBHCB.

희망이 도움이 될 수 있습니다.

+0

내가 뭘 찾고 있었는지 고마워. – JPC

+0

아,이게 내가 찾던 것이 아니란 걸 알게되었다. – JPC

관련 문제