首页 文章

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

提问于
浏览
0

我现在正试图决定是否值得学习核心数据 . 我一直在阅读一些有关其优缺点的文档和帖子,但我发现决定何时使用Core Data或Sqlite并不是那么清楚(例如,Core Data VS Sqlite or FMDB…?) .

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

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

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

提前致谢

2 回答

  • 1

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

    如果你想要核心数据的背景,我建议Apple视频Working with Core Data .

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


    在回答你的问题时:

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

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

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

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

  • 1

    AppsDev,

    只有你可以判断是使用核心数据还是坚持使用SQLite . 正如您在上面引用我的答案,您知道我的观点 - 使用核心数据 . 让我把它放在你的背景中 .

    最大的胜利是Core Data带来的抽象系列以及它们如何映射到Objective-C对象模型 . 这是您必须从SQLite应用程序手动处理的内容 . (你能做到吗?是的 . 但是,你很可能会创建一个自定义界面,它可以调整到你的SQL模式 . 它几乎没有可重用性 . 这是一个长期问题 . )

    至于谓词与SQL查询的问题,这是世界观的差异 . 也就是说,由于谓词可以应用于NSSets和NSArrays,因此它们具有超出Core Data所需的实用程序 . 知道如何使用谓词将是有 Value 的 . 例如,您可以轻松执行查询以获取记录集合,然后使用谓词来过滤它们,例如搜索表格视图 .

    当他们准备接受特定模式时,每个人都需要选择 . 不出所料,SQL专家喜欢坚持他们所知道的东西 . 动态语言爱好者会有不同的选择 . 对于iOS / OS X,拥抱动态语言路径对于您作为开发人员来说将具有越来越大的 Value .

    因此,我的建议仍然是:使用核心数据 .

    安德鲁

相关问题