уволитьGrantingAccessToURL UIDocumentPickerExtensionViewController не работает

Я работаю над расширением поставщика документов для режима импорта.

URL-адрес файла находится внутри общего контейнера, совместно используемого как расширением, так и приложением-контейнером.

Я получил ошибку утверждения, говорящую, что он должен находиться в общем каталоге контейнера/хранилища поставщика файлов.

Поэтому я скопировал файл из исходного каталога в каталог File Provider Storage.

У меня есть файл в исходном месте, и я также получил файл в новом скопированном месте. Я также проверил длину данных файла, это правильно,

Но когда я вызываю [самоотклонениеGrantingAccessToURL:toUrl];

Это не отклонение UIDocumentPickerExtensionViewController,

Я не сталкиваюсь с какими-либо исключениями, но он не отклонит и не инициирует передачу, поэтому пользователь все еще может получить доступ к расширению.

Ниже мой код. Если кто-то сталкивался с тем же, пожалуйста, оставьте свой ответ.

- (void)userChoosesEntityOfUrl:(NSURL *)url
{
    NSURL *toUrl = [self.documentStorageURL URLByAppendingPathComponent:[url lastPathComponent]];

    if ([[NSFileManager defaultManager] fileExistsAtPath:[toUrl path]]) {
        [[NSFileManager defaultManager] removeItemAtPath:[toUrl path] error:nil];
    }
    if ([[NSFileManager defaultManager] copyItemAtURL:url toURL:toUrl error:nil]) {

        NSLog(@"%@", [toUrl path]);
    }
    if (![[NSFileManager defaultManager] fileExistsAtPath:[toUrl path]]) {
        NSLog(@"File Doesn't exists at this path");
        return;
    }
    NSLog(@"Data Length %i",[[NSData dataWithContentsOfFile:[toUrl path]] length]);

    [self dismissGrantingAccessToURL:toUrl];
}

person Vijay    schedule 08.10.2014    source источник
comment
Пожалуйста, попробуйте с бета-версией Xcode6.1.   -  person Ilanchezhian    schedule 09.10.2014
comment
У меня такая же проблема ...   -  person Sylverb    schedule 14.10.2014


Ответы (2)


При отладке вашей реализации NSFileProviderExtension вы обычно заканчиваете тем, что останавливаете/убиваете ее с помощью Xcode. После этого у iOS часто возникают проблемы с перезапуском вашего расширения файла. Это приводит к тому, что средство выбора документов не закрывается после вызова dismissGrantingAccessToURL:. Эта ошибка также затрагивает ваш подкласс UIDocumentPickerExtensionViewController, который иногда не запускается (вы видите только панель навигации средства выбора документов, но не содержимое).

Обходной путь — перезагрузить устройство.

person davidisdk    schedule 23.10.2014

Это произойдет, если у вас есть резервное расширение поставщика файлов, которое не было полностью реализовано. Удалите цель поставщика файлов из фазы встроенного расширения, установите расширение документа только для поддержки режимов импорта/экспорта в Info.plist и выполните команду product -> Clean перед созданием и запуском расширения.

person Andrew Theis    schedule 14.10.2014
comment
Для меня это ничего не меняет... Обратите внимание, что у меня точно такая же проблема с образцом приложения NewBox! - person Sylverb; 14.10.2014
comment
Я снова создал свой проект, и когда я добавил цель поставщика документов, я снял флажок «Включить расширение поставщика файлов». Я не знаю, связано ли это с этим, но теперь это работает! - person Sylverb; 30.10.2014