ios - iOS 中的数据模型持久性注意事项

标签 ios sqlite core-data

我一直在我的 iOS 应用程序中使用 sqlite 数据库来实现数据持久性,现在我正在尝试决定是否值得学习 Core Data。我一直在阅读一些关于其优缺点的文档和帖子,但我发现决定何时使用 Core Data 或 Sqlite 并不是那么清楚(例如,Core Data VS Sqlite or FMDB…?)。

我需要一些指导来了解我是否应该学习和使用 Core Data,或者使用 Sqlite 对我来说就足够了:

  1. 已经有了 sqlite 脚本,是否可以从 sqlite 数据库中的数据构建核心数据模型? Afaik,(如果我错了请纠正我)您可以使用 sqlite 来持久化核心数据对象,但是是否可以反向操作?
  2. 处理多个用户数据是否适合 Core Data?我需要考虑到不同用户可以在同一台设备上登录该应用。

提前致谢

最佳答案

Core Data 是一个很棒的框架,但虽然它通常在幕后使用 SQLite,但您不应将 Core Data 视为数据库引擎,而更像是一个对象持久性框架。如果您有很多 SQL 代码(尤其是批量更新等),可能不值得转换为 Core Data。但 Core Data 有很多出色的性能优化、iCloud 集成等,因此值得更详细地研究。

如果您想了解 Core Data 的背景知识,我建议您观看 Apple 视频 Working with Core Data .

如果您只想简化 SQLite 代码,请查看 FMDB .


回答您的问题:

Already having sqlite scripts, is it possible to build a Core Data model from data in sqlite database? Afaik, (correct me if I'm wrong) you can use sqlite to persist Core Data objects, but is it possible to operate in reverse?

您通常必须重新定义您的核心数据模型。它不能只打开您现有的 SQLite 数据库(尽管一旦您定义了模型,您就可以编写代码将数据从 SQLite 传输到 Core Data)。

Is it appropiate Core Data for handling several users data? I need to take into account that different users could log in into the app in the same device.

是的,你可以。不过,您必须定义模型以手动处理此问题(例如,添加用户标识符字段并相应地手动编码谓词/过滤器结果,就像您在 SQLite 中必须做的那样)。

关于ios - iOS 中的数据模型持久性注意事项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16589652/

相关文章:

iphone - 我可以让两个重叠按钮同时响应两个事件吗

iphone - 我将如何检测 TTTAttributedLabel 中的链接?

java - 使用 Java 或 Groovy 为 SQLite 编写用户定义的 SQL 函数?

sql - SQLite在一个表达式中插入偶数和奇数行

Xcode 数据模型在编辑器中的外观问题

ios - react swift : Observe Managed Object changes with MutableProperty

ios - SKPaymentTransactionStateFailed 何时发生?

ios - 通知 iOs 推送已交付?

c# - 如何从 SQLite 数据库中以字符串数据类型的形式从 Select 查询获取数据?

iphone - 在 iPhone SDK 中使用 CoreData 存储 longLong 值