在方便初始化中使用NSError时出现问题



错误称

初始化之前使用了常量"err"

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

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

    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) }
}

在您的代码片段中,我看不出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)
    }
}

最新更新