Я пытаюсь импортировать собственный файл из одного из моих приложений в другое (назовем их App_A и App_B). Если я экспортирую файл прямо из App_A и в общем листе выбираю App_B, все работает нормально.
Моя проблема в том, что файл сохраняется в iCloud Drive, поэтому пользователь может получить к нему доступ через файловое приложение системы. Когда я пытаюсь выбрать тот же файл из приложения «Файлы» или в App_B через UIDocumentPickerViewController
.
В обоих случаях я запускаю следующий код (внутри UIDocumentPickerDelegate
или AppDelegate
):
let access = url.startAccessingSecurityScopedResource()
var error: NSError? = nil
NSFileCoordinator().coordinate(readingItemAt: url, error: &error) { (coorURL) in
do{
let data = try Data(contentsOf: coorURL)
}catch{
print("manage error: \(error.localizedDescription)")
}
if access{
url.stopAccessingSecurityScopedResource()
}
}
Ошибка, которую я получаю, всегда одна и та же:
Error Domain=NSCocoaErrorDomain Code=257 ... NSUnderlyingError=0x2803e07b0 {Error Domain=NSPOSIXErrorDomain Code=13 "Permission denied"}}
и url.startAccessingSecurityScopedResource()
всегда возвращает false
.
Я делаю это на Xcode 11.4.1, Swift 5 , iOS 13.3.1 на устройстве и 13.4.1 на симуляторе, но результат не меняется.
Вы имеете представление об этой странной ошибке? Я полагаю, что если пользователь выберет файл и приложение для его открытия, разрешение будет предоставлено, но, вероятно, мне что-то не хватает. Не могли бы вы помочь?