检查文件删除是否成功

时间:2016-06-29 14:56:59

标签: ios swift delete-file

根据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?

3 个答案:

答案 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)")
        }
    }
}