【问题标题】:How to initialise UIDocumentPickerViewController with all type of UTIs如何使用所有类型的 UTI 初始化 UIDocumentPickerViewController
【发布时间】:2016-01-11 00:47:40
【问题描述】:

我想打开 UIDocumentPickerViewController,它应该允许用户选择所有类型的文件。我试图在 UIDocumentPickerViewController init 方法中提及所有 UTI,但仍然无法为某些文件(如 rar、Visio 文件、mpp、mpt)找到有效的 UTI

UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc] initWithDocumentTypes:[MingleUtils allowedUTIs] inMode:UIDocumentPickerModeImport];

+(NSArray*)allowedUTIs{
    return @[@"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"];
}

【问题讨论】:

    标签: ios objective-c icloud uidocumentpickervc


    【解决方案1】:

    如果你想允许任何文件类型,你应该使用

    UIDocumentPickerViewController* documentPicker = 
      [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"public.data"]
                                                             inMode:UIDocumentPickerModeImport];
    

    查看苹果文档UTI concepts

    【讨论】:

    • “public.data”不支持自定义扩展
    • 在 iOS 12.0 上 - 没有崩溃,但也不允许我选择我想要的文件。
    【解决方案2】:

    斯威夫特 5:

    import MobileCoreServices
    
        let importMenu = UIDocumentPickerViewController(documentTypes: ["public.item"], in: .import)
        importMenu.delegate = self
        importMenu.modalPresentationStyle = .fullScreen
        self.present(importMenu, animated: true, completion: nil)
    

    【讨论】:

    • 如果您在回复中使用委托,请将初始化程序添加到回复中的代码中。
    【解决方案3】:
    UIDocumentPickerViewController* documentPicker = 
      [[UIDocumentPickerViewController alloc] initWithDocumentTypes:@[@"public.item"]
                                                             inMode:UIDocumentPickerModeImport];
    

    【讨论】:

    • 导致断言错误:传入类型 public.item 不符合 public.content 或 public.data。如果要导出新类型,请确保它符合适当的父类型。 @"public.data" 是正确的。
    【解决方案4】:

    我认为最好的方法是使用abstract UTI types

    使用 kUTTypeContent 和 kUTTypeItem 应该涵盖大部分文件类型。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-24
      • 2022-08-19
      相关资源
      最近更新 更多