Question

I'm writing an app which saves and loads documents both locally and on iCloud. Locally is working fine, but I'm having a problem with iCloud.

The documents are saved as a package - the UIDocument reads and writes an NSFileWrapper which contains an image file, a thumbnail file, and an info plist. When I save the document to iCloud and then look at the files under 'Manage Storage', I see the individual files instead of the packages; and more importantly when I search for files using NSMetadataQuery it returns an NSMetadataItem for each of the individual files instead of the packages. As a result, my app doesn't realise there are any packages to load and iCloud is pretty useless.

I thought that if I set up the document type and exported the UTI correctly that the packages would be treated properly. Was that right? If so, what's the checklist for setting up a document type as a package? I have:

  • Added a document type
  • set LSTypeIsPackage to YES (I've tried string YES and bool YES)
  • set CFBundleTypeExtensions to an array containing one string: the file suffix
  • set LSHandlerRank to Owner
  • Exported a UTI with the same identifier
  • set it to conform to com.apple.package
  • added a UITypeTagSpecification dictionary, containing an array for the key public.filename-extension, which contains one string: the file suffix

I've also tried adding a matching Imported UTI to match the exported one, but no luck there.

What did I miss?

UPDATE: I notice that the OP in this question is seeing the behaviour I want (even though he doesn't want it) so it must be possible.

Was it helpful?

Solution

Based on this I tried removing the LSItemContentTypes from my plist, and it worked.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top