是否将NSString(contentsOfURL:…)强制转换为字符串?

是否将NSString(contentsOfURL:…)强制转换为字符串?,string,swift,nsstring,String,Swift,Nsstring,Swift版本为1.2,错误信息为: 串?不能转换为字符串 使用Swift 1.2,字符串和NSString之间的自动桥接已被删除 因此,您必须明确地执行强制转换: let str=NSString(contentsofull:nsurl,usedEncoding:&enc,error:&err)作为?StringSwift的String接受与NSString相同的初始值设定项,因此您甚至不必使用NSString或typecast: public convenience init(nsurl:N

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

串?不能转换为字符串


使用Swift 1.2,字符串和NSString之间的自动桥接已被删除

因此,您必须明确地执行强制转换:


let str=NSString(contentsofull:nsurl,usedEncoding:&enc,error:&err)作为?String

Swift的String接受与NSString相同的初始值设定项,因此您甚至不必使用NSString或typecast:

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 2.0的更新

let str = String(contentsOfURL: nsurl, encoding: enc, error: &err)
如果需要,您还可以使用可选的带
try?
,在这种情况下不需要
do catch

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

在Swift 3中,我使用以下命令

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

是的,var在编辑代码时出现错误,我以任何方式删除了它,并且它工作了。。
do{
  let str = try String(contentsOf:personUrl!)
  print(str)
}catch let error{
  print(error)
}