我的应用在使用UIDocumentPickerViewController时崩溃了。

12

我正在为我的iOS应用程序制作文件共享功能,但是我对UIDocumentPickerViewController仍然不熟悉。 我不知道为什么我的应用程序会崩溃。

UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"public.image"] inMode:UIDocumentPickerModeImport];
documentPicker.delegate = self;
documentPicker.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentViewController:documentPicker animated:YES completion:nil];

应用程序在高亮行崩溃。

之前有人做过这个吗?我想做与下面附件类似的事情enter image description here


请展示崩溃线程的堆栈跟踪。 - Phillip Mills
[UIDocumentPickerViewController _commonInitWithCompletion:],/SourceCache/UIKit_Sim/UIKit-3318.16.14/UIDocumentPickerViewController.m:66 2015-03-27 17:40:24.282 DocPick[3285:73604] ***由于未捕获的异常 'NSInternalInconsistencyException' 终止应用程序,原因:初始化文档选择器的应用程序缺少iCloud授权。是否设置了com.apple.developer.icloud-container-identifiers? *** 第一个抛出调用堆栈: - Anand3777
看看这个,在Xamarin.iOS中的Entitlements.plist - Afzal Ali
4个回答

52
请参见苹果文档中的先决条件部分:

在您的应用程序可以使用文档选择器之前,您必须在Xcode中启用iCloud Documents功能。

enter image description here

请告诉我这是否解决了您的问题!


4

Swift 3.0 可以选择所有文档。

let documentPicker = UIDocumentPickerViewController(documentTypes: ["com.apple.iwork.pages.pages", "com.apple.iwork.numbers.numbers", "com.apple.iwork.keynote.key","public.image", "com.apple.application", "public.item","public.data", "public.content", "public.audiovisual-content", "public.movie", "public.audiovisual-content", "public.video", "public.audio", "public.text", "public.data", "public.zip-archive", "com.pkware.zip-archive", "public.composite-content", "public.text"], in: .import)

    documentPicker.delegate = self
    present(documentPicker, animated: true, completion: nil)

3
即使所有的权限都设置好了,有时候仍然会出现这种情况,特别是在设备上运行(而不是模拟器)。目前我找到的最好的解决方案是:
  1. 从Xcode中停止应用程序。
  2. 从设备上启动应用程序(点击主屏幕上的应用图标...)
  3. 在您的应用程序中导航,以打开 UIDocumentPickerViewController
  4. 一旦打开,您可以再次在Xcode中启动应用程序,UIDocumentPickerViewController将按预期初始化。
根据我的经验,它会一直工作,直到你安装了一个TestFlight版本。有时候你需要在重新启动Xcode后再次执行此操作。
这显然看起来像是在设备上安装授权的一个错误。(Xcode 7.2, iOS 9.2)

2
UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"com.apple.iwork.pages.pages", @"com.apple.iwork.numbers.numbers", @"com.apple.iwork.keynote.key"] inMode:UIDocumentPickerModeImport];

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接