我在 AppStore 上发布了一个基于 cosmicmind 图形数据库的应用程序。它将数据本地保存在共享沙箱中,以便与今天的扩展共享数据库。在新的更新中,我尝试添加 CloudKit 功能并且效果很好,但我有两个问题。我希望已经拥有该应用程序的用户可以同步本地存储在 iCloud 数据库中的数据,但我真的不知道该怎么做。第二个问题是今天的扩展。由于云数据存储在第二个 SQLite 文件中,以前运行良好的扩展现在返回一个空数组。任何帮助将不胜感激!谢谢
编辑感谢您的快速回答。这是我在数据管理器中本地使用的代码:
func startDataManager() {
let search = Search<Entity>(graph: databaseManager2).for(types: "ElencoItem")
elencoItems = search.sync(completion: nil)
}
这是我现在与 icloud 一起使用的代码:
func startDataManager() {
databaseManager = Graph(cloud: "MyContainer", completion: { (done, error) in
if done {
debugPrint("ok")
let search = Search<Entity>(graph: self.databaseManager).for(types: "ElencoItem")
self.elencoItems = search.sync()
} else {
guard let error = error else { return }
debugPrint("error iCloud: \(error.localizedDescription)")
}
})
我还添加了所有委托方法,并且效果很好。
我用今天的扩展解决了这个问题。问题是扩展没有看到为云版本保存的数组。我是这样保存的:
let nuovo = Entity(type: "ElencoItem", graph: DataManager.shared.databaseManager)
nuovo["value"] = value
现在我将云数据保存到一个新数组中,例如:
let search = Search<Entity>(graph: DataManager.shared.databaseManager).for(types: "ElencoItem")
for item in search.sync() { {
let nuovo = Entity(type: "ElencoItem")
nuovo["value"] = item["value"]
DataManager.shared.elenco.append(nuovo)
DataManager.shared.databaseManager2.sync()
}
并且扩展效果很好。
我现在正在尝试将本地保存的数据迁移到云端,但它不起作用。数据在本地保存如下:
let nuovo = Entity(type: "ElencoItem")
nuovo["value"] = value
我执行与上述相同的操作以将数据移动到云保存,例如:
let search = Search<Entity>(graph: self.databaseManager10).for(types: "ElencoItem")
for item in search.sync() {
let nuovo = Entity(type: "ElencoItem", graph: DataManager.shared.databaseManager)
nuovo["value"] = item["value"]
DataManager.shared.elencoItems.append(nuovo)
DataManager.shared.databaseManager.sync()
print(DataManager.shared.elencoItems)
}
当我在 for 循环之后打印数组时,我可以看到所有数据,但在关闭应用程序后,我再也找不到数据了。有什么解决办法吗?谢谢