根据XCode文档(alt-click),removeItemAtPath返回true或false。但是下面的代码给出了以下错误:
无法转换类型'()'的值指定类型' Bool'。
let result: Bool = try NSFileManager.defaultManager().removeItemAtPath(<my file path here>)
文档错了吗?如何检查文件是否成功删除?如果在removeItemAtPath?
中抛出错误,是否会跳过以下代码的执行示例:
try NSFileManager.defaultManager().removeItemAtPath(<my file path here>)
doOtherStuff()
如果抛出错误,是否会调用doOtherStuff?
答案 0 :(得分:1)
如果抛出错误,是否会调用doOtherStuff?
没有。 try
的重点是,如果失败则立即从当前范围退出。那就是为什么你不必捕获和测试结果和/或NSError指针(并且不能这样做)。
答案 1 :(得分:0)
根据评论,您希望使用Do / Try / Catch块。
do {
try NSFileManager.defaultManager().removeItemAtPath("<my file path here>")
} catch {
print ("The file could not be removed")
}
如果删除了文件,将执行try块中的代码。如果未删除该文件,则执行catch块中的代码。
例如,如果在try块中放置print(“Success”),则在成功删除文件时将执行该print语句。
同样在catch块中,如果文件未被删除,您可以放置要执行的任何代码。我把一个简单的打印声明,但你可以放任何你想要的。
答案 2 :(得分:0)
这是我使用try / catch:
的方法func deleteFileFromDocumentsDirectory(fileName : String) -> () {
// Optional 1: split file by dot "."
let fullName = fileName.componentsSeparatedByString(".")
let fileName = fullName[0];
let fileExtension = fullName[1];
let documentsFolder : String = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory,NSSearchPathDomainMask.UserDomainMask, true)[0]
let fileManager = NSFileManager.defaultManager()
let destinationPath = documentsFolder + "/" + fileName + "." + fileExtension
// Optional 2: check, if file exits
let fileExists = fileManager.fileExistsAtPath(destinationPath)
if fileExists {
do {
try fileManager.removeItemAtPath(destinationPath)
} catch let error as NSError {
print("Could not delete \(error), \(error.userInfo)")
}
}
}