【问题标题】:ORM on iPhone. More simple than CoreDataiPhone 上的 ORM。比 CoreData 更简单
【发布时间】:2010-05-09 09:29:19
【问题描述】:

这个问题很简单。我知道有 SQLite。还有核心数据。但我需要介于两者之间的东西。比 SQLite API 更面向对象,比 Core Data 更简单。

要点是:

  • 我只需要通过 id 访问存储的实体。无需查询。
  • 我需要存储单一类型的项目,这意味着如果我选择SQLite,我只能使用一个表。
  • 我想要自动的对象关系转换。如果存储不是关系型,则使用对象存储。

我可以使用对象归档,但我必须实现一些东西(NSArchiver)。

但我想编写某种类并自动获得持久性。因为它可以通过 Hibernate/ActiveRecord/Core Data/等来完成。

谢谢。

【问题讨论】:

    标签: iphone frameworks data-storage


    【解决方案1】:

    您所说的所有内容都与 Core Data 完全兼容。 Apple 为您提供了完全满足您陈述的需求的解决方案,那么您为什么要避免它呢?

    【讨论】:

    • 就我个人而言,这个问题突然出现在我面前,因为我正在寻找更简单的方法来做更像标准 ORM 的简单事情。我发现 CoreData 很难用于简单的操作。
    【解决方案2】:

    除了BNRPersistence,Alex 指出,我认为你不会找到任何维护对象关系的东西,但它比 Cocoa 平台上的 Core Data 更简单。像 FMDB 这样的 SQLite 对象包装器仍然需要您在自己的代码中管理关系。

    维护对象之间的关系是一项不平凡的任务,这就是为什么你看到的这些框架如此之少的原因。 Core Data 对很多人来说都是正确的,因此开发人员没有太大的动力来构建 Apple 解决方案的替代方案。 BNRPersistence 是由于 Aaron Hillegass 长期以来对 Core Data 的某些方面感到沮丧而创建的,但很多人(比如我)对 Core Data 的工作方式非常满意。

    您可能还想查看Core Resource,这是一个较新的框架,它提供了一些围绕核心数据的包装器,以使常见任务更容易。

    【讨论】:

    • 好吧,我现在不需要任何关系。我只有一个实体,我不想编写序列化代码。我正在寻找类似的东西:我编写对象结构并发送保存消息。它自己决定如何保存和保存什么。无论如何,谢谢你的资源。我已经知道 FMDB,但核心资源对我来说是新的,我会看看它。
    【解决方案3】:

    您可能会考虑使用非 Objective-C 方法来序列化对象,就像 XML 或 JSON 一样,如果您不想编写序列化代码,则无需编写序列化代码,因为框架会为您完成。例如,将您的对象放入与指向另一条记录的id 键的NSDictionary(通过包装类或其他)配对的键值属性中,然后使用json-frameworkJSONRepresentation 调用对混乱进行编码.您可能需要进行自己的关系完整性测试,但是瞧,即时关系数据库。

    【讨论】:

    • 有趣。不完全是我想要的,但对另一个项目非常有用。谢谢。
    【解决方案4】:

    看看BNRPersistence

    【讨论】:

    • 谢谢。但正如我所见,我必须创建类似于归档器的 encodeObject/decodeObject 方法的东西。我想要一些基于模型的东西。无论如何,有趣的可能性,谢谢。
    猜你喜欢
    • 1970-01-01
    • 2015-07-08
    • 1970-01-01
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2019-08-12
    • 1970-01-01
    相关资源
    最近更新 更多