可以使用 Realm 作为持久模型来表示 CloudKit 公共数据库吗?
Posted
技术标签:
【中文标题】可以使用 Realm 作为持久模型来表示 CloudKit 公共数据库吗?【英文标题】:Can Realm be used as a persistence model to represent a CloudKit public database? 【发布时间】:2016-02-24 19:11:46 【问题描述】:我想使用 Realm 作为持久性模型来表示我的 CloudKit 公共数据库。这可能吗?
具体来说,我想使用 CloudKit 来获取 Realm 数据模型并将其存储在我的 CloudKit 公共数据库中。
这将解决我当前每次应用加载到内存时都必须从 CloudKit 获取数据的问题。如果没有本地数据模型,当没有互联网连接时,由于没有持久性,因此不会获取任何数据。
如果应用从内存中删除,应用中保存的任何从 CloudKit 获取的数据也会从内存中删除。
【问题讨论】:
【参考方案1】:有可能,您只需编写代码将模型对象转换为可发送到 CloudKit 的 CKRecords 或从 CKRecords 转换。
如果您尝试使用私有数据库,我建议您使用这个库,它与 Realm 和 Core Data 兼容(免责声明,我是作者):https://github.com/mentrena/SyncKit
Core Data 的另一个解决方案是https://github.com/nofelmahmood/Seam
但是,公共数据库不允许查询更改,因此您必须推出自己的实现来保留一些记录查询的缓存,而不是整个模型的完全同步的本地缓存。
【讨论】:
感谢@Manuel 指定 SyncKit。只是阅读它的文档,看起来很有希望。【参考方案2】:在我看来,如果你想使用 CloudKit,你应该使用 Core Data 作为持久化存储。它可以很好地协同工作。
如果您更喜欢现代解决方案,请尝试 Realm Mobile Platform https://realm.io/products/realm-mobile-platform/
另外,您可以尝试使用 Vapor 编写一些自定义后端,并使用 Realm 作为持久存储。
【讨论】:
不确定您是如何得出这个结论的。作为使用的人。 COreData 除了自定义实现之外,没有支持 CloudKit 的有效解决方案。找了几个月 可以同步sqlite文件以上是关于可以使用 Realm 作为持久模型来表示 CloudKit 公共数据库吗?的主要内容,如果未能解决你的问题,请参考以下文章