是否存在Cocoa的ORM框架,或使用不同技术实现类似目标的框架?

mip*_*adi 3 macos orm cocoa

我正在开发一个需要以有组织的方式存储大量记录的应用程序.具体来说,我正在撰写个人理财应用程序.您可以想象,此应用程序将包含必须以各种方式排序的金融交易记录:按日期,按金额,按收件人,按帐户等.当然,应用程序需要快速获取,例如,所有某些日期之间的交易,快速总结一些记录,等等.

我还处于设计阶段,我计划使用SQLite作为应用程序的后端存储,因为OS X已经附带了一个SQLite框架.我心里想,抽出数据库连接层以便我可以在其他项目中重用代码,然后我想也许其他人可能已经这样做了.

然后我觉得这可能不是一个好主意.我已经在OS X上阅读了一些关于CoreData的内容,并认为我可能会为此目的使用CoreData.但是,我不知道CoreData是否真的符合我的目标.这似乎更像是一种抽象应用程序控制器并将UI小部件与模型联系起来的方法,而不是提供一个API,使其可以快速,轻松地运行可能对结构化数据进行复杂查询.

所以我的问题实际上是三个相关的部分:

  1. Cocoa有ORM吗?我正在寻找像Django的ORM层或Rails的ActiveRecord.(但我只需要它连接到SQLite数据库.)
  2. 或者我应该只使用CoreData吗?它能很好地满足我的需求吗?
  3. 或者我咆哮着错误的树,应该看另一个用不同技术实现我的目标的框架?

Bry*_*ore 6

最接近Cocoa的ORM是CoreData.虽然ORM并不安静,但更多的内存对象图可以序列化到磁盘.

它使用基于模型的通用布局,您可以向所述模型添加辅助函数等.它也可以保持参照完整性等,并且不需要使用SQL.

它可以有三个存储后端之一,建议使用SQLLite.我赞成将它用于我当前的应用程序.但是,经过一段时间的测试,我发现它太重了.这应该在10.5+中好一些,但是我的目标是10.4而且我发现它对我的使用来说太耗力/慢.

至于查询它,您通过NSPredicates执行大多数(所有?)查询,然后您可以使用foreignKey样式构造来访问相关模型.它可以安静有用.

它是ActiveRecord,Django的ORM还是SQLAlchemy的全功能?不,但它非常好.

我建议用它进行原型设计,并试着看看它是如何为你工作的.为了进一步阅读,我推荐了Pragmatic Bookshelf 的核心数据手册.我已经阅读并发现它通常对理解核心数据非常有帮助.