In addition to AFIncrementalStore and the other suggestions in this thread, you should check out Simperium (
http://simperium.com). Our iOS/OSX library watches your existing Core Data context and handles syncing transparently, with full support for offline use. Unlike other solutions, we use persistent connections and operational transforms to send only the data that changes, allowing many conflicts to be resolved automatically.
We've already been down the path of using a more traditional RESTful approach to syncing data with earlier versions of our app Simplenote. I agree it seems like it should be easy to just cache some offline data locally and send it up to a server at first opportunity. And you can write a prototype of that system pretty quickly. But in our experience at least, conflicts, errors, duplicates, etc. arise a lot more often than you might think and it's very hard to make a system like that reliable, not to mention scaling and maintaining it.