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?不可转换为字符串
答案 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