本文介绍了将 NSString(contentsOfURL:...) 转换为 String?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
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 版本,错误信息是:
Swift is version 1.2, error message is:
NSString?不可转换为字符串
推荐答案
Swift 的 String 接受与 NSString 相同的初始化器,因此您甚至不必使用 NSString 或类型转换:
Swift's String accepts this same initializer as NSString, so you don't even have to use NSString nor to typecast:
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)
}
如果需要,您也可以将 Optional 与 try?
一起使用,在这种情况下不需要 do catch
:
You can also use an Optional with try?
if you want, in this case no need for do catch
:
if let str = try? String(contentsOfURL: nsurl, encoding: enc) {
print(str)
} else {
// didn't succeed
}
这篇关于将 NSString(contentsOfURL:...) 转换为 String?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!