Swift 无法转换类型为';()?';到指定类型Bool

Swift 无法转换类型为';()?';到指定类型Bool,swift,Swift,我试图编写改变文件属性的代码,但我得到了一个编译器错误 代码如下: func addSkipBackupAttributeToItemAtURL(URL: NSURL) -> Bool{ let fileManager = NSFileManager.defaultManager() assert(fileManager.fileExistsAtPath(URL.absoluteString)) var error:NSError? let succes

我试图编写改变文件属性的代码,但我得到了一个编译器错误

代码如下:

func addSkipBackupAttributeToItemAtURL(URL: NSURL) -> Bool{

    let fileManager = NSFileManager.defaultManager()
    assert(fileManager.fileExistsAtPath(URL.absoluteString))

    var error:NSError?
    let success:Bool = try? URL.setResourceValue(NSNumber(bool: true),forKey: NSURLIsExcludedFromBackupKey)

    if !success {
        print("Error excluding \(URL.lastPathComponent) from backup \(error)")
    } else {
        print("File at path \(URL) was succesfully updated")
    }

    return success
}
错误是:

无法将类型“()?”的值转换为指定的类型“Bool”


如何修复它?

调用
url?.setResourceValue(NSNumber(bool:true),forKey:nsurlisecludedfrombackupkey)
不返回
bool
。您需要一个
Bool
作为响应。这就是错误的原因

苹果公司的
setResourceValue
方法说明

在Swift中,此方法返回
Void
,并用
throws
关键字,指示在失败时抛出错误


谢谢那么我该如何实现这一点呢?请注意,
URL.absoluteString
很可能应该是
URL.path
,例如比较。
do {
    try url?.setResourceValue(NSNumber(bool: true), forKey: NSURLIsExcludedFromBackupKey)

    //...
}
catch let error as NSError {
     //...
}