UIDocumentPickerViewController – Tous les files sont grisés

Je suis en UIDocumentPickerViewController tester la nouvelle API UIDocumentPickerViewController dans iOS 8. Je veux juste ouvrir un file dans iCloud, pour voir comment l'interaction fonctionne.

C'est le code que je UIViewController depuis mon UIViewController :

 - (IBAction)openDocument:(id)sender { [self showDocumentPickerInMode:UIDocumentPickerModeOpen]; } - (void)showDocumentPickerInMode:(UIDocumentPickerMode)mode { UIDocumentPickerViewController *picker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[(NSSsortingng *)kUTTypeData] inMode:mode]; picker.delegate = self; [self presentViewController:picker animated:YES completion:nil]; } 

openDocument est lié à un button dans IB. Quand je le tape, il ouvre le browser iCloud, mais chaque dossier est grisé (j'ai créé quelques files Keynote, Numbers et Pages test), donc je ne peux pas accéder aux files:

Document Picker avec des fichiers grisés .

J'ai vérifié quelques documents et j'ai fait ce qui suit (sans chance):

  • J'ai activé iCloud dans mon application (dans la section Capacités, à la fois pour le stockage de valeur-key et les documents iCloud).
  • Ajout de l'UTI pour public.data dans mon Info.plist comme suit:

     <key>CFBundleDocumentTypes</key> 

    CFBundleTypeIconFile icon.png CFBundleTypeName MyData CFBundleTypeRole Viewer LSItemContentTypes public.data LSTypeIsPackage NSDocumentClass Document NSPersistentStoreTypeKey Binaire

  • Ajout de la key NSUbiquitousContainerIsDocumentScopePublic avec la valeur YES à mon Info.plist.

Une idée de ce qui pourrait être faux ou manquant?

Les documents iWork ne sont pas conforms à kUTTypeData , ils sont conforms à kUTTypePackage .

Cependant, dans iOS 8 beta 3, j'ai dû utiliser les UTI exactes:

 UIDocumentPickerViewController *picker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"com.apple.iwork.pages.pages", @"com.apple.iwork.numbers.numbers", @"com.apple.iwork.keynote.key"] inMode:mode]; 
 **Swift 3+ Solution** 

Va ouvrir et donner access à tous les éléments sur le disque.

 //open document picker controller func openImportDocumentPicker() { let documentPicker = UIDocumentPickerViewController(documentTypes: ["public.item"], in: .import) documentPicker.delegate = self documentPicker.modalPresentationStyle = .formSheet self.present(documentPicker, animated: true, completion: { _ in }) } /* * * Handle Incoming File * */ func documentPicker(_ controller: UIDocumentPickerViewController, didPickDocumentAt url: URL) { if controller.documentPickerMode == .import { let alertMessage: Ssortingng = "Successfully imported \(url.absoluteURL)" } } /* * * Cancelled * */ func documentPickerWasCancelled(_ controller: UIDocumentPickerViewController) { print("Cancelled") }