Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在便利初始化中使用NSError发出_Swift_Swift2 - Fatal编程技术网

Swift 在便利初始化中使用NSError发出

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

错误说

初始化前使用的常量“err”

初始化前由闭包捕获的常量“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
变量,然后不使用它,因此它将始终为零

最好使用
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
的用法是什么?那么我应该改变什么呢?