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 {
//...
}