I am in the early stages of creating an app where I would like to save, sync and backup data. The app will not store any files just data in a database. It is going to be iOS 8 and up so I am able to use CloudKit. I did some research and still not clear on how Core Data, iCloud and CloudKit work together.
As far as understand CloudKit is just a way of getting and retrieving data to/from the cloud. Is CloudKit just a different way of syncing data with iCloud?
My questions are:
If I do use CloudKit, do I still need to create local core data database?
If the data is only stored in the cloud will user be able to access it when iOS device is not connected to the internet. I read that CloudKit will have only limited caching.
If someone can kind of break down what each technology does in the process of saving and syncing core data database offline and online.
My current understanding is:
Core Data is used to store data locally
iCloud syncs the data and stores in the cloud
CloudKit gives the ability to store and manage data in the cloud??
I hope I provided enough info for this question not to get closed.
It's like this:
If you wanted to use CloudKit with Core Data, you'd have to write your own custom code to translate between managed objects and CloudKit records. It's not impossible, but it's more code to write. It might be more reliable but it's too soon to say for sure.
I wrote a blog post describing CloudKit from the perspective of someone who's used Core Data and iCloud in the past.
Update, June 2016: As of the most recent documentation for NSPersistentStoreCoordinator
, everything related to Core Data with iCloud is marked as deprecated. As a result it should probably be avoided for new development.