Swift 在便利初始化中使用NSError发出
错误说 初始化前使用的常量“err” 及 初始化前由闭包捕获的常量“err” 有人知道如何解决这个问题吗Swift 在便利初始化中使用NSError发出,swift,swift2,Swift,Swift2,错误说 初始化前使用的常量“err” 及 初始化前由闭包捕获的常量“err” 有人知道如何解决这个问题吗 public convenience init(nsurl:NSURL) { var enc:NSStringEncoding = NSUTF8StringEncoding let err:NSError? let str = String(try! NSString( contentsOfURL:nsurl, usedEncoding
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
变量,然后不使用它,因此它将始终为零
最好使用try
内部Do Catch
大概是这样的:
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)
}
}
在为常量赋值之前,您正在测试
err
是否为nil。这张支票为什么存在?你认为在这个初始值设定项中,err
的用法是什么?那么我应该改变什么呢?