我在Swift游乐场重现了这个问题,但还没有解决它......
我想在UILabel中打印一系列字符。如果我明确声明了这个角色,它就可以了:
// This works.
let value: String = "\u{f096}"
label.text = value // Displays the referenced character.
但是,我想构造String。下面的代码似乎产生与上面一行相同的结果,但它没有。它只生成字符串\u{f096}
而不是它引用的字符。
// This doesn't work
let n: Int = 0x95 + 1
print(String(n, radix: 16)) // Prints "96".
let value: String = "\\u{f0\(String(n, radix: 16))}"
label.text = value // Displays the String "\u{f096}".
我可能错过了一些简单的事情。有什么想法吗?
答案 0 :(得分:3)
如何停止使用字符串转换voodoo并使用标准库类型UnicodeScalar?
您也可以直接从其数字表示创建Unicode标量值。
let airplane = UnicodeScalar(9992)
print(airplane)
// Prints "✈︎"
UnicodeScalar.init实际上返回了可选值,因此您必须将其解包。
如果您需要String
,只需将其通过Character类型转换为字符串。
let airplaneString: String = String(Character(airplane)) // Assuming that airplane here is unwrapped