FMDB Wrapper VS核心数据:哪种更易于使用&保持?

时间:2011-12-17 05:23:58

标签: iphone ios database core-data

FMDB Wrapper VS核心数据:更易于使用&保持?

我很困惑,因为FMDB很老,但仍然有很多开发人员正在使用它,而Core Data是新的,只有3.0及更高版本的sdk支持。

有人说FMDB很容易使用,有些人说核心数据。请帮助我,这样我就可以朝着正确的方向前进。

先谢谢

2 个答案:

答案 0 :(得分:19)

我现在已经在很多项目中大量使用过。

FMDB非常简单,如果您了解SQL,它甚至可以很容易使用。但是,随着数据模型的变化,您在应用程序生命周期中所要做的就是:

  1. 更改数据模型,通常使用类似Base
  2. 的内容
  3. 更改SQL代码以反映模型更改
  4. 更改数据对象以反映模型更改
  5. 将代码添加到应用中以处理遇到旧版本的情况 数据库中。
  6. 核心数据为生命周期带来的是:

    1. 使用相同的操作更改数据模型和对象(我是 假设您使用mogenerator)生成数据对象。
    2. 更轻松地显示数据模型。
    3. 鼓励您通过思考来更轻松地遍历数据模型 反向关系。
    4. 通常,自动迁移足以通过简单模型进行转换 无需从头开始重建数据库即可进行更改。
    5. Core Data通过NSManagedDocument提供一些iCloud集成。
    6. Core Data为您提供的地狱是:

      1. 删除很糟糕,因为删除对象中的任何属性访问权限 抛出程序查杀异常。
      2. 后台线程数据访问很糟糕,因为Core Data可以实现 复杂的多线程正常工作 - 你不能 示例使用从一个线程中的上下文获取的数据对象 在另一个不同的线程。简单地将对象传递给了 工作背景线程...
      3. 当你的事情发生时,你的数据周围有如此多的魔力 错了,试图弄清楚要做什么会非常令人沮丧 做。
      4. 核心数据看起来非常脆弱,比如被删除的对象抛出异常,使用错误的线程抛出异常,抛出异常的验证,或整个模型在看似简单的变化之后消失都是可能的。
      5. 那么我会推荐什么?为了解释关于民主的旧引用,核心数据是最糟糕的数据持久性系统 - 除了所有其他系统。即使Core Data将为您的生活带来痛苦和痛苦的新定义,与FMDB或其他数据持久层相比,它仍然更少工作且更容易使用。

        FMDB更直接,如果您可以将更多时间用于更改和数据模型定义,那可能没问题。但通常我会建议人们咬紧牙关并使用核心数据,除非有明确的理由不这样做。

        一些快速提示:

        • 在UI启动时,永远不要删除Core Data中的任何内容 访问对象。
        • 如果可能,将数据库视为一次性并且能够重建 内容,以便如果自动迁移不起作用,用户仍然可以 运行应用程序。
        • 将所有Core Data活动保留在主线程上,并且只放入 背景作为最后的手段。
        • 在任何情况下都不要使用Core Data验证,或者取消选中实体中的“可选”框。你宁愿拥有哪一个,一个糟糕的价值进入你的模型,可能最终显示有趣或应用程序只是崩溃?
        • 使用mogenerator从模型生成数据对象。它输出的对象直接绑定到重新生成可以更改的模型,并且一层对象排在“上方”,开始空白但是可以在其中添加自定义逻辑并且不会被更改当下层物体再生时。

答案 1 :(得分:0)

除非您有一些特定的项目要求,否则我会使用Core Data。 Apple不断改进它,并为iPhone进行了优化。