1

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

要点是:

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

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

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

谢谢。

4

4 回答 4

2

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

于 2010-05-09T23:26:12.123 回答
1

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

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

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

于 2010-05-09T13:41:16.913 回答
1

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

于 2010-05-09T19:18:50.150 回答
0

看看BNRPersistence

于 2010-05-09T09:34:30.693 回答