如何转换unichar到字符

时间:2017-05-18 10:32:51

标签: ios swift swift3 char

有更好的方法将unichar转换为Character吗? 尝试过:

var unichar = ...
let str = NSString(characters: &unichar, length: 1) as String
let character = Array(str.characters)[0])

2 个答案:

答案 0 :(得分:2)

您可以转换unichar - > UnicodeScalar - > Character

let c = unichar(8364)
if let uc = UnicodeScalar(c) {
    let char = Character(uc)
    print(char) // €
} else {
    print("illegal input")
}

0xD800...0xDFFF范围内的输入值 (高和低代理人)是不允许的,因为他们没有 对应于有效的Unicode标量值。

如果保证不会出现那些输入值那么你 可以简化转换为

let char = Character(UnicodeScalar(c)!)

用默认字符替换可能的无效输入值 (例如问号),使用

let char = Character(UnicodeScalar(c) ?? "?")

答案 1 :(得分:0)

public class func stringForIcon(_ icon: NSInteger) -> Character {
        return Character(UnicodeScalar(icon)!)
    }