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

Sla*_*ast 4 nsurl ios swift

我使用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)
}
Run Code Online (Sandbox Code Playgroud)

我得到了'使用未解析的标识符'fileURLWithPath'!

我应该使用绝对URL路径吗?

Eli*_*rke 13

Swift 4如果有人需要它:

var resourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true
try? fileUrl.setResourceValues(resourceValues)
Run Code Online (Sandbox Code Playgroud)

  • 在Swift 4中对我来说效果很好 (2认同)

小智 7

这应该工作

        do {
            try filePath.setResourceValue(true, forKey: NSURLIsExcludedFromBackupKey)
        } catch _{
            print("Failed")
        }
Run Code Online (Sandbox Code Playgroud)


vau*_*all 5

这适用于Swift3。URL必须为var

let urls:[URL] = FileManager.default.urls(for:FileManager.SearchPathDirectory.documentDirectory, in:FileManager.SearchPathDomainMask.userDomainMask)
let appDirectory:URL = urls.last!
var fileUrl:URL = appDirectory.appendingPathComponent("myFile")

var resourceValues:URLResourceValues = URLResourceValues()
resourceValues.isExcludedFromBackup = true

do
{
    try fileUrl.setResourceValues(resourceValues)
}
catch let error
{
    print(error.localizedDescription)
}
Run Code Online (Sandbox Code Playgroud)