Swift2:无法为类型' NSString'调用初始化程序。

时间:2015-09-19 03:29:02

标签: ios swift

我是Swift开发的新手。我刚刚将现有的工作代码转换为swift2,同时从6更新Xcode 7。

var err: NSError?
let template = NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding, error: &err) as! String
let iframe = template.stringByReplacingOccurrencesOfString("{{VIDEO_ID}}", withString: id, options: NSStringCompareOptions.allZeros, range: nil)
if err != nil {
        return false
}

然后, 我收到此错误消息:

Cannot invoke initializer for type 'NSString' with an argument list of type '(contentsOfFile: String, encoding: UInt, error: inout NSError?)'
你知道吗?非常感谢!

1 个答案:

答案 0 :(得分:0)

您应该使用Swift 2' "do-try-catch" syntax来处理错误:

do {
    let template = try String(contentsOfFile: path!, encoding: NSUTF8StringEncoding)
    // Use the template
} catch let error as NSError {
    // Handle the error
}

明确阅读有关此文档的文档,因为它显示了一些其他处理错误的方法 - 例如try?会在出现任何错误时为您提供可选项,try!将阻止错误传播(如果发生错误,您将收到运行时错误。)