可以使用 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 公共数据库吗?的主要内容,如果未能解决你的问题,请参考以下文章

Realm数据持久化方案的简单介绍和使用

带有NSStrings数组的RLMObject

Hibernate持久化对象的状态

联结并加入Realm in swift

如何在 Swift for Realm 模型中设置主键

如何将 Realm 数据库转移到应用程序组