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

时间:2015-10-20 11:06:49

标签: ios json swift

enter image description here

照片等错误出现在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)

    }
}

1 个答案:

答案 0 :(得分:1)

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

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

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

另一种选择是使用failable初始值设定项。为此,您需要调用self.init(nsurl:nsurl),如果执行块无异常,否则从catch块返回nil。你还需要将方便初始化方法标记为可用(参见"?"在初始化词之后)

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