OGeek|极客世界-中国程序员成长平台

标题: ios - Core Data vs. SQLite 用于通过 OData 公开的现有数据库的脱机持久性 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 03:56
标题: ios - Core Data vs. SQLite 用于通过 OData 公开的现有数据库的脱机持久性

我正在创建一个应用程序,该应用程序需要对其通过 OData Web 服务公开的数据进行“离线”持久性。 OData 服务让我可以访问底层数据库的所有表,以及所有相关的数据库字段,例如 ID。

另外,我已经有了一个可以使用的 SQLite 数据库架构。

我的问题是,我已经问过两次了,是直接通过 SQLite(使用 FMDB)将 Web 服务数据存储在设备上,还是利用 Core Data 更好?

如果我使用 Core Data,那么我将失去主键和外键的关系优势,但会获得自动嵌套/填充的 NSManagedObjects 的优势。我不完全确定如何最好地重新创建我的数据对象的关系性质。

如果我使用 SQLite,我可以直接插入/更新 Web 服务调用的结果,并自动从现有的外键列中获取关系。缺点是我可能需要手动将结果封装在 POCO 对象中。

我现在的直觉告诉我 SQLite,但似乎社区在任何/所有情况下都绝大多数指向 Core Data。如果是 Core Data,我如何最好地创建和维护对象关系(尤其是当它们是 1->many 时)

如果任何与 Apple 相关的方面存在问题,此应用将不会进入应用商店。



Best Answer-推荐答案


Core Data 直接对关系建模。因此,在您的架构中,您可能会说例如对象 A 与对象 B 有关系,并且该关系是“对多”的。然而,这些关系就像普通的对象引用一样工作——您需要将 A 的每个实例链接到 B 的所有相关实例,您不会 [容易或通常] 只是说“A 通过外键 bID 与 B 相关”然后让关系自己处理。

如果您有一个 SQL 持久存储,那么实现的方式是每个对象都为其表获取一个隐式唯一键。关系被建模为一个额外的列,其中包含外部表中每个链接对象的一个​​或多个键。

人们往往不喜欢 Core Data 的其他方面:

反之:

关于ios - Core Data vs. SQLite 用于通过 OData 公开的现有数据库的脱机持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15914064/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4