Cloudkit + Core Data не синхронизируется - PullRequest
0 голосов
/ 13 июля 2020

У меня есть приложение Core Data + Couldkit, в котором любые изменения, сделанные на другом устройстве, не синхронизируются. Мне пришлось снова вызвать метод выборки refre sh данных. Изменения вносятся в отношения Сущностей, такие как добавление объекта в набор отношений NSManagedObject. Затем я извлекаю объекты с предикатом, а затем заполняю данные в табличном представлении только из отношения (NSSet).

Даже когда я добавляю данные в другой контроллер представления, изменения не отражаются в родительском контроллере, где я показываю данные, которые были добавлены. Мне пришлось добавить наблюдателя уведомлений, чтобы выполнить эту работу и снова получить данные.

Я даже добавил необходимые строки в AppDelegate,

let container = NSPersistentCloudKitContainer(name: "myappcontainername")
container.viewContext.automaticallyMergesChangesFromParent = true

Ниже приведены журналы CoreData после создания change,

CoreData+CloudKit: -[NSCloudKitMirroringDelegate finishedAutomatedRequestWithResult:](2119): Finished request '<NSCloudKitMirroringExportRequest: 0x6> -UUID' with result: <NSCloudKitMirroringResult: 0x> success: 1 madeChanges: 1 error: (null)

Это означает, что мои изменения были синхронизированы с Cloudkit.

Что еще мне нужно сделать, чтобы это сработало?

1 Ответ

1 голос
/ 26 июля 2020

Вы так настроили свой контейнер?

  let options = NSPersistentCloudKitContainerOptions(containerIdentifier: id)
    
  let description = container.persistentStoreDescriptions.first
    
   
  description?.cloudKitContainerOptions = options
  description?.setOption(true as NSNumber, forKey: NSPersistentHistoryTrackingKey)
  description?.setOption(true as NSNumber, forKey: NSPersistentStoreRemoteChangeNotificationPostOptionKey)
...