2

내 애플은 UIManagedDocument의 내부에 포함 된 핵심 데이터 데이터베이스를 사용합니다. iCloud를 통해 동기화하려고하면 데이터가 거의 새로 고쳐지지 않습니다. 내 스키마에 다음 app 인수를 추가하여 편재 로그를 켰습니다.iCloud에 NSPersistentStoreDidImportUbiquitousContentChangesNotification

-com.apple.coredata.ubiquity.logLevel 3 

인수 로그 출력은 대상 장치가 소스 장치에서 만들어진, 아직 NSPersistentStoreDidImportUbiquitousContentChangesNotification 통지가 트리거되지 직후 변경 사항을 인식하고 있음을 보여준다. 경우에 따라 알림은 업데이트가 발생한 후 상당한 시간이 지났지 만 대개는 업데이트되지 않습니다.

그러나 로그가 변경 사항에 대한 텍스트를 인쇄 한 후 언제든지 앱을 다시 실행하면 NSPersistentStoreDidImportUbiquitousContentChangesNotification 알림이 즉시 트리거되어 데이터가 새로 고침됩니다.

참고 : 나는 알림에 가입했다.

[[NSNotificationCenter defaultCenter]addObserver:self 
             selector:@selector(updatedFromCloud:) 
              name: NSPersistentStoreDidImportUbiquitousContentChangesNotification 
              object:nil]; 
+0

정확히 동일한 문제가 있으며 영구 저장소 코디네이터를 개체 매개 변수로 전달하고 있습니다. 해결책을 찾았습니까? – Ixx

답변

1

당신은 알림을 듣고 반대하는 알 수 있도록 사용중인 NSPersistentStoreCoordinator에 객체를 설정해야합니다. 코드에서이 값을 0으로 설정했습니다.

예 :

[[NSNotificationCenter defaultCenter]addObserver:self 
            selector:@selector(updatedFromCloud:) 
             name: NSPersistentStoreDidImportUbiquitousContentChangesNotification 
             object:self.persistentStoreCoordinator]; 

당신이 NSManagedObjectContext (그러나 코디네이터)에 액세스 할 수있는 클래스의 관찰자를 게시하는 경우, 당신은 단순히 self.managedObjectContext.persistendStoreCoordinator를 통해 코디네이터를 추출 할 수 있습니다.

희망이 도움이됩니다.

+0

동일한 문제가 있으며 영구 저장소 코디네이터 (객체가 하나뿐입니다)를 객체 매개 변수로 전달하고 있습니다. 그래서 나는 그것이 다른 어떤 것으로 인한 것이라고 생각합니다. 어떤 생각? – Ixx