在便利init中使用NSError发出问题

时间:2016-01-13 02:03:22

标签: swift swift2

错误说

  

在初始化之前使用常量'错误'

  

在初始化之前通过闭包捕获常量'错误'

有谁知道如何解决这个问题?

    public convenience init(nsurl:NSURL) {
    var enc:NSStringEncoding = NSUTF8StringEncoding
    let err:NSError?
    let str =
    String(try! NSString(
        contentsOfURL:nsurl, usedEncoding:&enc))
       //the code below got error
    if err != nil { self.init(err!) }
    else { self.init(string:str) }
}

1 个答案:

答案 0 :(得分:1)

在您的代码段中,我看不到err将填充实际错误消息的位置?

你创建err变量然后你不使用它,所以它总是为零。

最好在Do-Catch中使用try

这样的事情:

public convenience init(nsurl:NSURL) {
    var enc:NSStringEncoding = NSUTF8StringEncoding
    do {
        let str = try String(contentsOfURL:nsurl, usedEncoding:&enc)
        self.init(string:str)
    } catch let error as NSError {
        self.init(string: error.localizedDescription)
    }
}