2010-05-09 46 views
1

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

要点是:

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

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

但我想写一些类,并自动获得持久性。这可以通过Hibernate/ActiveRecord/Core Data /等来完成。

谢谢。

回答

1

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

维护对象之间的关系是一项不平凡的任务,这就是为什么你看到这些框架中有那么几个。核心数据对于很多人来说都是正确的,因此开发人员没有太多的动机去建立苹果解决方案的替代品。 BNRPersistence是由于Aaron Hillegass长期以来对Core Data某些方面的挫折而产生的,但许多人(像我)对Core Data的工作方式非常满意。

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

+0

嗯,我现在不需要任何关系。我只有一个实体,我不想编写序列化代码。 我在寻找这样的:我写对象的结构和发送保存消息。它决定了如何保存和自己保存的内容。 无论如何,感谢的资源。我已经了解FMDB,但是Core Resource对我来说是新的,我会看看它。 – bealex 2010-05-09 15:03:39

0

看看BNRPersistence

+0

谢谢。但正如我所看到的,我必须创建类似于archiver的encodeObject/decodeObject方法的东西。我想有一些基于模型的东西。 无论如何,有趣的可能性,谢谢。 – bealex 2010-05-09 10:31:45

1

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

+0

有趣。不完全是我想要的,但对另一个项目非常有用。谢谢。 – bealex 2010-05-10 09:39:08

2

你所说的你想要的全部内容与Core Data完全兼容。苹果公司给你提供的解决方案完全符合你的陈述需求,那么你为什么试图避免它?

+0

个人而言,这个问题突然出现,因为我正在寻找更简单的方法来做更像标准ORM的简单事情。我发现CoreData在用于简单操作的屁股上很痛苦。 – 2014-05-14 09:51:37