De acordo com a documentação, createDirectory
pode gerar um erro se algo der errado. No entanto, o valor de retorno é:
true se o diretório foi criado, true se createIntermediates estiver configurado e o diretório já existir ou false se ocorreu um erro.
Quero testar se um diretório foi criado ou se já existe. Achei que algo como o seguinte serviria:
do {
let dirOK = try fileManager.createDirectory(atPath: toDirectory, withIntermediateDirectories: true)
if dirOK {
print("ok")
}
else {
print("no")
}
}
catch let error as NSError {
print(error)
}
No entanto, recebo a mensagem de erro:
Não é possível converter o valor do tipo '()' para o tipo de condição esperado 'Bool'
Como posso verificar se um diretório foi realmente criado?
O problema é que você não leu os documentos bem o suficiente. Mas não é culpa sua, na verdade; eles também estão mal escritos! Após a parte sobre o retorno de um Bool, que você citou, os documentos passam a se contradizer:
Então aí está sua resposta: afinal, não há Bool retornado. Basta remover o seu
dirOK
e não se preocupe. Se houver um problema ao criar o diretório, eletry
falhará (com umthrow
do gerenciador de arquivos) e você cairá nocatch
bloco em boas condições. Se você alcançar a próxima linha dodo
bloco após atry
linha, foi bem-sucedido.NOTA Em geral, o padrão aqui é exatamente como funciona a maioria dos métodos de geração de erros do Objective-C; se o Objective-C tivesse "retorna um Bool e define um NSError por indireção", o Swift automaticamente "não retorna nada e lança se houver um problema".