CosmicMind Graph + iCloud 和 Today Extension
Posted
技术标签:
【中文标题】CosmicMind Graph + iCloud 和 Today Extension【英文标题】:CosmicMind Graph + iCloud and Today Extension 【发布时间】:2017-05-18 19:02:31 【问题描述】:我在 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 循环之后打印数组时,我可以看到所有数据,但在关闭应用程序后,我再也找不到数据了。 有什么解决办法吗? 谢谢
【问题讨论】:
【参考方案1】:所以 Graph 具有与 iCloud 的同步机制。如果你使用它,你只需要编写一个迁移函数来移动你的数据,然后更新你的应用程序以利用 iCloud API。对于今天的扩展......不确定那是什么。
【讨论】:
我编辑了这个问题,以展示我是如何尝试迁移数据的。你能告诉我有什么问题吗?谢谢 经过多次测试,将迁移函数移动到不同的位置,我得到以下错误:“致命错误:[Graph Error: Cannot get Permanent objectID]”。真不知道怎么解决。知道@CosmicMind 吗?谢谢【参考方案2】:问题解决了。 我将迁移功能从数据管理器移动到加载的第一个视图控制器,删除了打印语句,它运行良好!
【讨论】:
以上是关于CosmicMind Graph + iCloud 和 Today Extension的主要内容,如果未能解决你的问题,请参考以下文章
CosmicMind/Material - 如何在 NavigationDrawerController 中调用 pushViewController?