14 December 2011Its been a while since Apple introduced the iCloud API.
I've been testing and experimenting with it since the first beta release and I must say that Im not convinced that iCloud is ready for prime time. Atleast not for Core Data based applications.
I've implemented iCloud support for MyWallet+. But I think its too easy to create situations where data that is shared between several units will get corrupted. The most hazardous situations I've come across are the following:
- Core Data: Related data
Referential integrity must be handled manually. This is sort of a drag. A tedious drag if you consider that all relationships in your database must have their own, specific, referential integrity code that validates and redeems synchronization requests between units.
- Migration from non-iCloud to iCloud DB
I've not yet found an quick and safe way to migrate an existing Core Data database to iCloud. The only really safe way to do this is by performing an export to an intermediary format and then importing it, record by record. If you've got a decent sized database, it will be time consuming. Uncool.
This does not mean that we wont add iCloud support to My Wallet+.
It only means we're going to make really sure that it works flawlessly before releasing it.
Simple as that. Anything else would be irresponsible.
Update 20 December 2011
There actually is a preferred way of accomplishing issue #2 (above). I've just completed the implementation of the migration function. This means that all your existing MyWallet+ databases will be automatically moved into iCloud, and it wont take forever (2-10 seconds).