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

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


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


提前致谢

最佳答案

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

如果您想了解Core Data的背景知识,建议您使用Apple视频Working with Core Data

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



在回答您的问题时:


  已经有了sqlite脚本,是否可以从sqlite数据库中的数据构建Core Data模型? Afaik,(如果我错了,请纠正我),您可以使用sqlite来保留Core Data对象,但是可以反向操作吗?


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


  是否适合处理多个用户数据的核心数据?我需要考虑到不同的用户可以在同一设备上登录该应用程序。


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

07-27 13:39
查看更多