![](/img/trans.png)
[英]'self.init' isn't called on all paths before returning from initializer
[英]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.