Swift错误:无法将类型'()'转换为指定类型'Bool'

时间:2016-03-05 05:54:11

标签: swift

我是Swift的新手,我在我的项目中实施了文件管理器概念,但它显示了问题,我不知道如何解决这个问题,请任何人帮我解决问题。

我在这里发布我的代码。

class func addSkipBackupAttributeToItemAtPath(filePathString: String) throws -> Bool
{
    let URL: NSURL = NSURL.fileURLWithPath(filePathString)
    assert(NSFileManager.defaultManager().fileExistsAtPath(URL.path!))
    let err: NSError? = nil

    let success: Bool = try URL.setResourceValue(Int(true), forKey: NSURLIsExcludedFromBackupKey) //---- This Line Shows the Issue.

    if !success {
        NSLog("Error excluding %@ from backup %@", URL.lastPathComponent!, err!)
    }
    return success
}

2 个答案:

答案 0 :(得分:2)

Swift 2中新错误处理的好处是省略了准冗余返回值Bool / NSError。因此,setResourceValue不再返回Bool,这是错误消息的原因。

由于该函数标记为throws,我建议使用此语法,只传递setResourceValue的结果

class func addSkipBackupAttributeToItemAtPath(filePathString: String) throws
{
    let url = NSURL.fileURLWithPath(filePathString)
    assert(NSFileManager.defaultManager().fileExistsAtPath(URL.path!))

    try url.setResourceValue(true, forKey: NSURLIsExcludedFromBackupKey)
}

处理调用addSkipBackupAttributeToItemAtPath

的方法中的错误

答案 1 :(得分:1)

方法setResourceValue是一个throw函数,不返回Bool。

尝试使用do-catch运行您的函数:

do {
    try URL.setResourceValue(Int(true), forKey: NSURLIsExcludedFromBackupKey)
}
catch {
    NSLog("Error excluding %@ from backup %@", URL.lastPathComponent!, err!)
}