根据文档,createDirectory
如果出现问题,可能会抛出错误。然而,返回值是:
如果已创建目录,则为 true;如果设置了 createIntermediates 并且目录已存在,则为 true;如果发生错误,则为 false。
我想测试一个目录是否已创建或已经存在。我想像下面这样的事情会做:
do {
let dirOK = try fileManager.createDirectory(atPath: toDirectory, withIntermediateDirectories: true)
if dirOK {
print("ok")
}
else {
print("no")
}
}
catch let error as NSError {
print(error)
}
但是,我收到错误消息:
无法将“()”类型的值转换为预期条件类型“Bool”
如何检查目录是否实际创建?
问题是你没有充分阅读文档。但这不是你的错,真的;他们也写得不好!在您引用的关于返回 Bool 的部分之后,文档继续自相矛盾:
所以这就是你的答案:毕竟没有返回 Bool 。只需删除您的即可
dirOK
,不用担心。如果创建目录时出现问题,则会try
失败(从文件管理器中显示),并且您将按良好顺序throw
落入该块中。catch
如果到达该行之后do
的块的下一行,则成功。try
注意一般来说,这里的模式正是大多数 Objective-C 错误生成方法的工作方式;如果 Objective-C 具有“返回 Bool 并通过间接设置 NSError”,那么 Swift 会自动“不返回任何内容并在出现问题时抛出异常”。