在以前的swift版本中,以下代码起作用。

let letterString = String( UnicodeScalar( 97 ) )
print( letterString )

返回“a”
升级到swift 3后,它建议我改为
let letterString = String( describing: UnicodeScalar( 97 ) )
print( letterString )

返回可选(“a”)
好的,所以我试着加了!操作员打开但不起作用。
let letterString = String( describing: UnicodeScalar( 97 ) )
print( letterString! )

给出错误:无法强制非可选类型“string”的展开值
有人能告诉我这里发生了什么事吗?如何从swift 3中的ascii值获取未包装的字符串值?

最佳答案

不是可选的String实例。它是UnicodeScalar结构。所以你必须打开那个:

let letterString = String(describing: UnicodeScalar(97)!)
print(letterString)

另一种方法是使用UnicodeScalar的其他初始值设定项。那你根本不需要打开它。
let letterString2 = String(describing: UnicodeScalar(UInt8(97)))
print(letterString)

07-25 21:32