Core Data 与 Ensembles 的 iCloud 同步

iCloud syncing of Core Data with Ensembles

我的计划是购买 Ensembles 2(利用 speed/efficiencies 等)但我正在努力确保我能够让它工作(在测试 Swift 项目中) 第一的。为此,我正在试验 v1.

使用带有 Swift 的简单同步作为指南,我已将合奏合并到我的 xcode 项目中。

当我删除应用程序然后重新添加它时,应用程序中的数据似乎确实存储在 iCloud 中,吸取然后同步确实从 iCloud 恢复了正确的数据。我的问题是,使用第二台设备(登录到同一个 apple/iCloud 帐户)进行测试时,它会用自己的数据做同样的事情。来自 2 个设备的数据永远不会合并。但是,在重新加载应用程序后,每台设备上创建的数据都会恢复到各自的设备上。

有人知道这是怎么回事吗?

我想知道问题是否出在我生成的商店 url 上。许多核心数据堆栈设置现在在 Swift 3+ (NSPersistentContainer) 中自动完成,因此这些东西不需要由用户生成。以下是我如何为商店 url 和模型 url 生成变量,以便在设置我的整体时使用:

var storeDirectoryURL: URL {
        return try! FileManager.default.url(for: .applicationSupportDirectory, in: .userDomainMask, appropriateFor: nil, create: true)
    }

var storeURL: URL {

        return storeDirectoryURL.appendingPathComponent("VsSyncTest.sqlite")
    }

    // Setup Ensemble

let modelURL = Bundle.main.url(forResource: "VsSyncTest", withExtension: "momd")

我能想到的唯一可能发生的情况是,如果您使用不同的 iCloud 帐户,或者您对每台设备使用不同的整体标识符。

另请注意,iCloud 文档共享可能很顽固。仅仅因为文件在本地添加到容器中并不意味着它们会立即传输到其他设备。 (CloudKit 后端在这方面要好得多,但仅限于 E2。)

如果您正在使用模拟器进行测试,使用 Debug > iCloud > Trigger Sync in Simulator 可能会有所帮助。