Theocacao
Leopard
Design Element
Comment on "Cocoa Developers Are Spoiled"
by Ben — Feb 17
Hi Scott, I've read (and used) your guides on Core Data. What an excellent document(s) you've put together. And I truely am impressed at what Apple has developed for us, and at the end of the day for consumers to experience great .apps. But I've a 100% background in Windows development, and I guess this makes me a skeptic when looking at something like Core Data (I'm just not used to seeing something like it), not a negative skeptic, but skeptic that Apple have offered something so easy that it doesn't have flaws.

Perhaps I should explain myself further, why the skeptic? I guess there's a couple of things on my mind, and I hope you don't mind the time to read, and perhaps respond to my questions with your ideas/corrections/opinions.

1. To good to be true?
While the design of entities looks great, and the MOC takes care of presenting the data between the View and ones Model, to my amazement Apple have futher taken care of persistance for us! But at what cost? Surely we've had to give up some of the control that we once had, it's no longer our glue-code. It must now be taken care of Apples black-box. Right?

When I used your Core Data tut, immediately I was impressed (I think I've made that clear ;) but also I felt that I might have lost control here of my app. And I find it hard to believe that Apple Core Data and Controlling interfaces would be able to handle all my needs. To be sure there will be something that I want for my .app that CD/MOC will not be able to handle?

You've used Core Data more than I, do you find a lack of control over your data or UI? Do you fear that there will be a component of this drag-and-drop system missing and not allow you to do what you want? Are you able to override the Managed Controllers for UI validation, or more?

2. Locked into an Apple OS?
Core Data appears to be new to Tiger, right? I guess this immediately locks you into 10.4 if you where to release an .app. I guess this is a individual, or enterprise decision more than anything.

But don't you have doubts that, if a component or implementation of Core Data were missing and was corrected/added in 10.5. A feature your project required and you implemented. Wouldn't you find that perhaps your .app is constantly locked into the latest version of OS X? In the ideal world everyone would upgrade, but we all know this not to be the case. What's your thoughts here?

3. Model Versioning.
Are you worried that as your .app evolves (during dev. or after release) and as features creep into your system, this (apparently) hard coded Model becomes difficult to maintain?

From what I've read, if you change your Model you can no longer open your existing XML/Bin/SQL model files/dbs. This to me sounds immediately scarey. Further reading Apple suggests that you update existing (lets assume XML) files before you .app connected to the data source. But also I've read that Apple does NOT recommend opening the XML by hand, Core Data might change the way is reads/uses the XML and you may inadvertantly break your .app.

My question, does Core Data in-fact have a Model versioning system built in? So you can easily offer a version 1.0 to 2.0 path?

4. Production strength.
In your opinion with Core Data and the MOC, is this production strength design and .app building? I often see Core Data code floating around Apples developer website, and this makes me wonder if indeed the CoreData/MOC is not flexible enough, and you do often resort to code. (Does this reflect back into my questions in Q1? Or is CD indeed strong enough to build your .app from the Model Designer and the Control-Drag the little blue lines around Interface Builder?

Again, I do hope that you read this post, and that you've time to respond. I enjoy your blog, keep it going (and if you've more Core Data tuts for Cocoa Central I will lap them up!)
Back to "Cocoa Developers Are Spoiled"
Design Element

Copyright © Scott Stevenson 2004-2015