Средство выбора документов iCloud с пользовательским интерфейсом пользователя

Есть ли UIDocumentPickerViewController initWithDocumentTypes требуется общественный UTI для функционирования?

Я пытаюсь использовать iCloud Documents, чтобы пользователи могли импортировать проприетарный тип файла из iCloud Drive. Тестирование отлично работает для публичных ИМП, таких как: @"public.text"

Если я не включу публичный UTI в initWithDocumentTypes массив, я получаю экран с указанием:

Нет документов. Документы в iCloud Drive недоступны, поскольку параметр iCloud Documents & Data отключен.

Мой Импортированный UTI определен в Target > Info как "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, но мои пользовательские типы файлов отображаются серым цветом и недоступны для выбора.

Замечания:

  1. Я не создал расширение провайдера документов, так как не считаю, что это необходимо, и мой формат файла не является распространенным.
  2. Я вижу следующее предупреждение, когда предпринимаю какие-либо действия UIDocumentPickerViewController, даже если это Отмена, и даже если действие над файлом (т.е. сохранить.txt) работает. Я потратил довольно много времени, просто пытаясь найти источник этого предупреждения, но безрезультатно.

плагин com.apple.UIKit.fileprovider.default признан недействительным

1 ответ

У меня была эта проблема, и я решил ее, настроив экспортированный пользовательский UTI в соответствие с UTI "public.data".

Вы можете установить это, выбрав цель, а затем вкладку информации. Выделите раздел "Экспортированные ИМП" и разверните его. Под вашим пользовательским UTI есть поле, чтобы объявить, что оно соответствует.

Смотрите здесь список системных UTI: https://developer.apple.com/library/ios/documentation/Miscellaneous/Reference/UTIRef/Articles/System-DeclaredUniformTypeIdentifiers.html

Другие вопросы по тегам