You want to store key-value data in dictionary form in a iCloud, and seamlessly read and write to this centralized and synchronized dictionary from various devices and from various iCloud accounts.
The data that you store in iCloud using the
NSUbiquitousKeyValueStore is uniquely
created in iCloud using the provision profile with which you sign the
app and the end-user’s iCloud account. In other word, you simply store
values in iCloud using the
NSUbiquitousKeyValueStore class, not
worrying if one user’s data is going to clash with another user’s
data. iCloud does that separation for you.
class works very similar to the
NSUserDefaults class. It can store strings,
boolean, integer, float and other values. Each one of the values
has to have a key associated
with it. You will then be able to read the values by passing the keys
to this class. The difference between the
NSUbiquitousKeyValueStore and the
NSUserDefaults class is that the former
synchronizes its dictionary data with iCloud, whereas the latter only
stores the dictionary locally to a .plist file—this data will be deleted once
the app gets deleted from the user’s device.
Before you can use the
NSUbiquitousKeyValueStore class to store
key-value data in iCloud, you must set up the appropriate
entitlements for your project. Please refer to Recipe 17.1 to learn how to do
An instance ...