Cover by Vandad Nahavandipoor

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

O'Reilly logo

17.2. Storing and Synchronizing Dictionaries in iCloud

Problem

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.

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 17.1 to learn how to do this.

An instance ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required