将NSString(contentsOfURL:...)转换为String?

时间:2015-08-28 05:28:05

标签: string swift nsstring

public convenience init(nsurl:NSURL) {
    var enc:NSStringEncoding = NSUTF8StringEncoding
    var err:NSError?
    let str:String? =
    NSString(
        contentsOfURL:nsurl, usedEncoding:&enc, error:&err
    )
    if err != nil { self.init(err!) }
    else { self.init(string:str!) }
}

Swift是版本1.2,错误信息是:

  

的NSString?不可转换为字符串

3 个答案:

答案 0 :(得分:1)

使用Swift 1.2删除String和NSString之间的自动桥接。

所以你必须明确地做演员:

let str = NSString(contentsOfURL:nsurl, usedEncoding:&enc, error:&err) as? String

答案 1 :(得分:1)

Swift的String接受与NSString相同的初始化程序,因此您甚至不必使用NSString,也不必进行类型转换:

let str = String(contentsOfURL: nsurl, encoding: enc, error: &err)

Swift 2.0更新

do {
    let str = try String(contentsOfURL: nsurl, encoding: enc)
    print(str)
} catch {
    print(error)
}

如果需要,您还可以使用try?选项,在这种情况下不需要do catch

if let str = try? String(contentsOfURL: nsurl, encoding: enc) {
    print(str)
} else {
    // didn't succeed
}

答案 2 :(得分:0)

在Swift 3中我使用以下

rax