Criação de UIDocument no iOS 11: o leitor não tem permissão para acessar a URL

Desde o iOS 11, encontrei o seguinte errotoda vez que estou criando um novo documento usandoUIDocument API:

[ERRO] Não foi possível obter os valores do atributo para o item/var/mobile/Containers/Data/Application/XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX/Documents/myDoc-XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXX.myFile (n).

Erro: Domínio do Erro = Código NSFileProviderInternalErrorDomain = 1
"O leitor não tem permissão para acessar a URL."
UserInfo = {NSLocalizedDescription = O leitor não tem permissão para acessar a URL.}

Diferentemente de perguntas semelhantes (1, 2, 3) em SO sobre isso, eu não estou usandoUIDocumentBrowserViewController. Estou simplesmente criando um UIDocument e chamandosave() aoDocuments próprio diretório. opergunta mais próxima Eu encontrei usosUIManagedDocument. No entanto, no meu caso,o arquivo ainda é criado e gravado com êxito, apesar da mensagem de erro.

Aqui está a essência da minha rotina de salvamento:

@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()
        }
    }
}

MinhasUIDocument subclasse também está quase em branco para simplificar esta pergunta:

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 {

    }

}

Estou sempre escrevendo paraDocuments pasta e minha rotina de pesquisa pode verificar se meus arquivos foram criados com êxito:

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)
}

O que eu descobri até agora:

O erro aparece mesmo quando eu já configurei minha UTI. Vejoesta eesta.Posso verificar se minha UTI funciona quando envio um "myFile" para o meu dispositivo pelo AirDrop e aciona corretamente o meu aplicativo para abrir.O erro aparece apenas no iOS 11. O mesmo código não reproduz o erro no iOS 10, como ema pergunta acima.Eu tentei adicionarUISupportsDocumentBrowser chave, embora eu não esteja usando o navegador, mas não dissolva o erro.

O que está acontecendo? Esta é apenas uma mensagem de erro "ruído" no iOS 11?

Aqui estámeu código do GitHub on-line se alguém estiver interessado.

questionAnswers(2)

yourAnswerToTheQuestion