R – n ORM framework for Cocoa, or a framework that accomplishes a similar goal using a different technique

cocoamacosorm

I'm developing an application that needs to store lots of records in an organized way. Specifically, I'm writing a personal finance app. As you can imagine, this app will contain records of financial transactions that must be sorted in various ways: by date, by amounts, by recipient, by account, etc. And of course, the app will need to quickly get, say, all transactions between certain dates, quickly sum up some records, and so forth.

I'm still in the design phase, and I'm planning to use SQLite as the backend storage for the app, since OS X already ships with a SQLite framework. I thought to myself that it might be nice to abstract out the database-connection layer so that I may re-use the code in other projects, and then I thought that maybe someone else may have already done this.

Then I thought it might not be a good idea at all. I've read a little bit about CoreData on OS X, and thought that maybe I should be using CoreData for this purpose. However, I don't know if CoreData really fits my goals. It seems more like a way to abstract out an app's controllers and tie UI widgets to models, rather than providing an API to make it fast and easy to run possibly complicated queries on structured data.

So my question is really three related parts:

  1. Is there an ORM for Cocoa? I'm looking for something like Django's ORM layer, or Rails' ActiveRecord. (I only need it to connect to SQLite databases, though.)
  2. Or should I just use CoreData for this? Will it fit my needs well?
  3. Or am I barking up the wrong tree, and should be looking at another framework that accomplishes my goals with a different technique?

Best Answer

Is there an ORM for Cocoa? I'm looking for something like Django's ORM layer, or Rails' ActiveRecord. (I only need it to connect to SQLite databases, though.)

Technically, no.

Or should I just use CoreData for this? Will it fit my needs well?

You can try, but CoreData is not likely a good fit. CoreData has some ORM like features, but is not really an ORM.

Or am I barking up the wrong tree, and should be looking at another framework that accomplishes my goals with a different technique?

There are alternatives, but nothing that approaches a native Cocoa ORM. One such option is to use a Java ORM like Hibernate which you then call from your Cocoa code.

In reality, you don't need an ORM. You could build a simplistic ORM yourself on top of the OSX SQLLite framework. If you then open sourced your simplistic ORM, this question would have a better answer. :)

Related Topic