Cover by Vandad Nahavandipoor

Safari, the world’s most comprehensive technology and business learning platform.

Find the exact information you need to solve a problem on the fly, or go deeper to master the technologies and skills you need to succeed

Start Free Trial

No credit card required

O'Reilly logo

19.3. Creating and Managing Folders for Apps in iCloud

Problem

You want to store specific files into specific folders within the user’s iCloud storage for your app.

Solution

Follow these steps:

  1. Make sure your app is set up to use iCloud (see Recipe 19.1)

  2. Select your project file (with the blue icon) in Xcode and select the Summary tab.

  3. In the Summary tab, scroll down until you get to the Entitlements section. Find the iCloud Containers list and copy the first value in that list. The value for the project that I have set up for this recipe is com.pixolity.Creating-and-Managing-Folders-for-Apps-in-iCloud. This value will be different for your app.

  4. In your app delegate, place the string that you copied from iCloud Containers list, into a string. Prefix this string with your Team ID (see Recipe 19.2 on how to find your Team ID).

  5. Now instantiate an object of type NSFileManager and pass the path that you created in the previous two steps, to the URLForUbiquityContainerIdentifier: method of this class. The value of this method will be the local address for iCloud storage on the device that is running your app. Let’s call this path Root iCloud Path.

  6. Append the folder name that you want to create to the Root iCloud Path (see previous step). Keep the resulting path in a string or an instance of NSURL.

  7. Invoke the fileExistsAtPath:isDirectory: method of your file manager. If this method returns NO, then go on to create the folder using the createDirectoryAtPath:withIntermediateDirectories:attributes:error: ...

Find the exact information you need to solve a problem on the fly, or go deeper to master the technologies and skills you need to succeed

Start Free Trial

No credit card required