UIDocumentPickerViewController initWithDocumentTypes是否需要 public UTI才能起作用?

我正在尝试利用iCloud文档来允许用户从iCloud驱动器导入专有文件类型。对于 public UTI,测试工作正常,例如:@"public.text"
如果我不在initWithDocumentTypes数组中包含 public UTI,则会得到一个屏幕,指示:

没有文件。 iCloud Drive中的文档不可用,因为
iCloud文档和数据设置已禁用。

我的导入的UTI在“目标”>“信息”中定义为“com.domain.file”。我必须相信这是正确设置的,因为我可以在另一个应用程序(例如Dropbox)中选择我的专有文件之一,并且我的应用程序会显示在“打开于...”选项中。

在导入操作中,我尝试了所有可以想到的变体,以使自定义UTI显示选择器。

- (IBAction)importDocumentPickerTapped:(id)sender
{
    UIDocumentPickerViewController *documentPicker = [[UIDocumentPickerViewController alloc initWithDocumentTypes:@[@"com.domain.file", @"com.domain.app.file", @"iCloud.com.domain.file", @"iCloud.com.domain.app.file" ] inMode:UIDocumentPickerModeImport];
    documentPicker.delegate = self;
    documentPicker.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentViewController:documentPicker animated:YES completion:nil];
}

如果我将@"public.text"添加到initWithDocumentTypes数组,则iCloud驱动器位置选择器屏幕将按预期显示。我可以选择.txt和.rtf文件,但是我的自定义文件类型显示为灰色且无法选择。

注意:
  • 我没有创建文档提供程序扩展名,因为我认为这不是必需的,并且我的文件格式不常见。
  • 我对UIDocumentPickerViewController采取任何操作时,即使已取消,也对文件(即保存.txt)进行了操作,都看到以下警告。我花了很多时间只是试图跟踪此警告的来源,但无济于事。

  • 插件com.apple.UIKit.fileprovider.default无效

    最佳答案

    我遇到了这个问题,并通过使我的自定义导出UTI符合“public.data” UTI来解决了这个问题。

    您可以通过选择目标,然后选择信息标签来进行设置。滚动到“导出的UTI”部分,然后将其展开。在您的自定义UTI下,有一个框声明它符合要求。

    有关系统定义的UTI的列表,请参见此处:
    https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html

    关于ios - 具有自定义UTI的iCloud文档选择器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30079165/

    10-10 14:53