Вот
ая с iOS 11 я столкнулся со следующей ошибкойкаждый раз, когда я создаю новый документ с помощьюUIDocument
API:
[ОШИБКА] Не удалось получить значения атрибутов для элемента/var/mobile/Containers/Data/Application/XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX/Documents/myDoc-XXXXXXXXX-XXXX-XXXXXXXXX-XXXXXXXXXXIL (x) XMX.
Ошибка: Ошибка Домена = NSFileProviderInternalErrorDomain Код = 1
«Читателю не разрешен доступ к URL».
UserInfo = {NSLocalizedDescription = Читателю не разрешен доступ к URL.}
В отличие от похожих вопросов (1, 2, 3) так на этом я не пользуюсьUIDocumentBrowserViewController
, Я просто создаю UIDocument и звонюsave()
кDocuments
каталог себя.ближайший вопрос Я нашел использованиеUIManagedDocument
, Однако в моем случаефайл все еще создан и успешно записан, несмотря на сообщение об ошибке.
Вот суть моей процедуры сохранения:
@IBAction func createDoc(_ sender: Any) {
let uuid = UUID().uuidString
let doc = Document(baseName: "myDoc-\(uuid)")
doc.save(to: doc.fileURL, for: .forCreating) { (completed) in
if (completed) {
doc.close(completionHandler: nil)
self.verifyNumberOfFiles()
}
}
}
мойUIDocument
Подкласс также почти пуст для простоты этого вопроса:
class Document: UIDocument {
let fileExtension = "myFile"
override init(fileURL url: URL) {
super.init(fileURL: url)
}
/// Convenience method for `init(fileURL:)`
convenience init(baseName: String) {
self.init(fileURL: documentsDirectory.appendingPathComponent(baseName).appendingPathExtension(Document.fileExtension))
}
override func contents(forType typeName: String) throws -> Any {
return NSData()
}
override func load(fromContents contents: Any, ofType typeName: String?) throws {
}
}
Я всегда пишуDocuments
папку, и моя процедура поиска может проверить, что мои файлы успешно созданы:
public var documentsDirectory: URL {
return FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).last!
}
func loadFileURLs(from dirURL: URL) -> [URL]? {
return try? FileManager().contentsOfDirectory(at: dirURL, includingPropertiesForKeys: nil)
}
Что я обнаружил до сих пор:
Ошибка появляется, даже когда я уже настроил свой UTI. Видетьэто а такжеэто.Я могу убедиться, что мой UTI работает, когда я отправляю «myFile» на мое устройство через AirDrop, и это правильно вызывает мое приложение для открытия.Ошибка появляется только на iOS 11, Тот же код не воспроизводит ошибку на iOS 10, как ввопрос выше.Я пытался добавитьUISupportsDocumentBrowser
ключ, хотя я не использую браузер, но он не устраняет ошибку.Что случилось? Это просто сообщение об ошибке «шум» на iOS 11?
Вотмой код GitHub онлайн если кому-то интересно.