Word of warning: not one of the 5-star reviewers actually worked through examples in this book then reviewed it.
It's not a 5-star book. It's a 5-star topic, and sadly (very very sadly) it's the only book I know of actually on that topic.
I think the author's intentions are good, and there's a lot of useful info. I'm grateful to have it.
But all of that has to be balanced against the maddening b.s. of trying to actually follow his examples. You know, to actually do what you're supposed to do with a programming book.
Up to chapter 5, it's a pretty good book. If you download the code from the publisher's web site, you'll discover that he names some of his objects differently than you would if you follow his instructions strictly. This actually will create problems for you potentially when you try and troubleshoot problems in your own code, but they're minor. Annoying and needless, but minor.
Then you get to chapter 5, and it's really not so minor anymore. Grab the book (print version or PDF) and work through the examples in chapter 5, and you will have a broken program. Don't take my word for it. Check out the forums and the errata page on their website, and you'll see others reporting the same problem. There is a complicated data migration described. After walking us through a fairly trivial example, he then goes on to give us a much more complicated version. He leaves large portions of that to the reader, and just goes instead for code. The problem is that he doesn't even give us some of the most important code. He shows us a very important ObjC method to add to the AppDelegate... but never even mentions the major alterations you need to make in another method to make that new one get called.
Perhaps it's unreasonable to expect programming book editors to actually go through the examples to see if it works. Perhaps it's unreasonable to expect all books to be as well-done as Hillegass' book.
What's sad is that I've been waiting for this kind of book ever since Core Data came out. And there are some very nice ideas here. I'm gonna slog through the rest and hope it gets better, because the topic is really important. If you plan to buy this book and really work through the examples, I think I'd still recommend it (since there's nothing else). But word to the wise: it's gonna require a LOT more work than a properly written and edited programming book would have.
I wanted to learn how to use Apple's Core Data technology in my iPhone applications. I was deeply disappointed by this book.
"Core Data" leaves out a discussion of NSPredicate, the query language of Core Data. This is basically the same as leaving a discussion of the WHERE clause out of a SQL book. For the record, "Core Data" actually does cover NSPredicate -- for 3/4 of a page. And then it references Apple's documentation. Before I bought this book, I had already read Apple's docs and found them wanting. Apple's lame documentation was a motivating factor in my choice to purchase "Core Data".
If you need to make queries on the Core Data object graph, then do not buy this book. It doesn't help you learn Apple's different query language.
Core Data is one of the denser, more complex APIs in the Cocoa framework and Marcus' book does a great job of introducing you to the concepts and terminology. The sample application that is built throughout the book is a sensible choice and easy to understand. Some sections such as the import/export example I found incredibly useful after struggling on my own through the same issues before I bought the book.
The only thing I found missing was much discussion of NSPersistentDocument and document-based apps, there is only an in-passing reference to this type of application but since Apple already has a great tutorial on this in their documentation it's not a major issue.
If you want to get up to speed quickly with Core Data I'd highly recommend this book. It is a much easier read than the official Apple documentation and covers all the bases. If nothing else, the Apple docs will be much easier to wrap your head around once you've worked through this book first.
Scott A. Henderson
This book is definitely for advanced programmers who wish to incorporate core data into their work. I am still learning Cocoa and Mac programming after a long hiatus. There are some mistakes in the book and without some background, novices (like myself) would be clueless as to how to fix them. Thankfully, there is a web site posting the errors and omissions to get one back on track. About half of the chapters are related to core data with the remaining discussing how to use core data with other Apple technologies: Spotlight, iPhone, multithreading, etc. If you're looking for great insights to core data that will make it easier to understand, you should probably skip this book.
There are some very good explanations in this book and, for desktop OS X use, I think it's probably a very useful book (4-5 stars). Unfortunately the chapter on core data and iPhone is quite messy. The chapter mixes upgrading an existing iPhone app to use core data and starting from scratch with the nav template available from SDK 3.0. It doesn't clearly explain what needs to be copied over (model, sqlite db etc), though you can deduce this. The existing template code isn't separated from the code the author has added, and some of the author's code appears to replace the template code.
Given that many people will be coming to core data on iPhone with new projects it would have been helpful to see three, clearly distinct, sub-sections:
1) starting a core data project from scratch on iPhone (post-SDK 3)
2) importing a core data model and persistent store from the desktop to use in an iPhone app (post-SDK 3)
3) upgrading an existing app (pre-SDK 3) to use core data
For iPhone developers new to core data I'd recommend building an app from scratch using the Apress, or PragProg, or Sams intro books and then reading this book to understand what core data is all about in the larger world view. No book that I'm aware really covers core data on iPhone very well.