如何使用Swift 2从备份中排除文件?

时间:2015-09-19 09:50:50

标签: ios swift nsurl

我使用Swift 1.2工作得很好,因为我使用filePath作为字符串。现在,Swift 2希望我们所有人都使用URL路径,即使我正在阅读他们的文档,我仍然无法使用它。

我有;

var fileName = "myRespondusCSV.csv"

let fileManager = NSFileManager.defaultManager()

let documentsURL = fileManager.URLsForDirectory(NSSearchPathDirectory.DocumentDirectory, inDomains: NSSearchPathDomainMask.UserDomainMask)


if let documentPath: NSURL = documentsURL.first as NSURL! {

    filePath = documentPath.URLByAppendingPathComponent(fileName)
        print(filePath)        
    } else {
        fileManager.createFileAtPath(filePath!.path!,
                                     contents: ("" as String).dataUsingEncoding(NSUTF8StringEncoding)!,
                                     attributes:nil)
        print("file has been created")
    }
}

func excludeFileFromBackup() {

    var error:NSError?
    //var fileToExcludeh = NSURL.fileReferenceURL(filePath!)

    var fileToExcludeh = fileURLWithPath(filePath)

    let success = fileToExcludeh.setResourceValue(true, forKey: NSURLIsExcludedFromBackupKey, error: &error)
}

我正在使用未解析的标识符' fileURLWithPath'!

我应该使用绝对网址路径吗?

5 个答案:

答案 0 :(得分:13)

如果有人需要,可以使用Swift 4:

var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true
try? fileUrl.setResourceValues(resourceValues)

答案 1 :(得分:7)

这应该有效

        do {
            try filePath.setResourceValue(true, forKey: NSURLIsExcludedFromBackupKey)
        } catch _{
            print("Failed")
        }

答案 2 :(得分:3)

这适用于Swift 3。 网址必须为$_POST

var

答案 3 :(得分:1)

以下是 Swift 3

的解决方案
func addSkipBackupAttributeToItemAtURL(URL:NSURL) -> Bool {
    var success: Bool

    do {
        try URL.setResourceValue(true, forKey:URLResourceKey.isExcludedFromBackupKey)
        success = true
    } catch let error as NSError {
        success = false
        print("Error excluding \(URL.lastPathComponent!) from backup \(error)");
    }
    return success
}

答案 4 :(得分:0)

在swift 5中为我运行的代码是...

var file: URL = <# your URL file #>
do {
   var res = URLResourceValues()
   res.isExcludedFromBackup = true
   try file.setResourceValues(res)
} catch {
   print(error)
}

您当然可以将其放在函数或扩展中。