加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 3.0:String初始化器Encoding不能为nil的解决

发布时间:2020-12-14 06:37:45 所属栏目:百科 来源:网络整理
导读:以后会写一系列Swift 3.0中的小变化的博文,内容短小,因为我遇到这种问题就马上写下来,并不会刻意积累一大堆再一起写出来.如果大家有Swift 3.0使用上的问题欢迎提问. 这个问题发生在之前可以执行的代码中: if let plays = try ? String (contentsOfFile: path

以后会写一系列Swift 3.0中的小变化的博文,内容短小,因为我遇到这种问题就马上写下来,并不会刻意积累一大堆再一起写出来.如果大家有Swift 3.0使用上的问题欢迎提问.

这个问题发生在之前可以执行的代码中:

if let plays = try? String(contentsOfFile: path,usedEncoding: nil){
    //do some stuff...
}

但是该段代码在Swift 3.0中报错了,提示usedEncoding这个参数不可以为nil!但是我们事先并不知道file的编码方式,那么这个参数该如何赋值呢?

答案很简单,你可以选用一种”假象”的编码,然后cocoa会帮你推测出该文件实际的编码方式,注意该参数是inout的类型哦.

所以我们可以这样写:

var encoding:String.Encoding = .ascii
if let plays = try? String(contentsOfFile: path,usedEncoding: &encoding){
    //do what anything you want to!
}

你可以在String初始化器成功初始化后检查file实际的编码方式:

print("encoding is (encoding.description)")

这里返回将是:

encoding is Unicode (UTF-8)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读