19.2. Storing and Synchronizing Dictionaries in iCloud
Problem
You want to store key-value data in dictionary form in iCloud, and seamlessly read and write to this centralized and synchronized dictionary from various devices and from various iCloud accounts.
Solution
Use the NSUbiquitousKeyValueStore class.
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.
Discussion
The NSUbiquitousKeyValueStore
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.
Note
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 19.1 to learn how to do
this.
An instance ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access