繁体   English   中英

json.swift 错误是 Self.init 未在委托初始化程序的所有路径上调用

[英]json.swift error is Self.init isn't called on all paths in delegating initializer

在此处输入图片说明

json.swift 中出现诸如照片之类的错误

我不知道如何修复它。 请帮我

    public convenience init(nsurl:NSURL) {
    var enc:NSStringEncoding = NSUTF8StringEncoding
    let err:NSError?

    do {
        let str: String? = try NSString(contentsOfURL: nsurl, encoding: NSUTF8StringEncoding) as String
        //print(str)

        self.init(nsurl:nsurl)

    } catch let error as NSError {
        //print(error.description)

    }
}

根据您的意图,您有几个选择。

如果您只是不想在初始化期间创建对象并打印附加信息,则可以像这样重写代码。

public convenience init(nsurl:NSURL) {       
 var enc:NSStringEncoding = NSUTF8StringEncoding
 let err:NSError?

 self.init(nsurl:nsurl)
 do {
       let str: String? = try NSString(contentsOfURL: nsurl, encoding: NSUTF8StringEncoding) as String
       print(str)

    } catch let error as NSError {
       print(error.description)
    }
}

另一种选择是具有可失败的初始化程序。 为此,您需要调用 self.init(nsurl:nsurl) 如果 do 块无异常执行,否则从 catch 块返回 nil。 您还需要将便利的 init 方法标记为可失败(请参阅 init 字后的“?”)

public convenience init?(nsurl:NSURL) {       
 var enc:NSStringEncoding = NSUTF8StringEncoding
 let err:NSError?

    do {
       self.init(nsurl:nsurl)
       let str: String? = try NSString(contentsOfURL: nsurl, encoding: NSUTF8StringEncoding) as String
       print(str)

    } catch let error as NSError {
       print(error.description)
       return nil
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM