Средство выбора документов 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, но мои пользовательские типы файлов отображаются серым цветом и недоступны для выбора.
Замечания:
- Я не создал расширение провайдера документов, так как не считаю, что это необходимо, и мой формат файла не является распространенным.
- Я вижу следующее предупреждение, когда предпринимаю какие-либо действия
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