Вот

ая с 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 онлайн если кому-то интересно.

Ответы на вопрос(2)

Ваш ответ на вопрос