如何在Swift中用太多字节初始化UniChar?

时间:2018-02-04 19:03:04

标签: swift macos unicode

enter image description here我正在尝试初始化UniChar变量,例如:

var unicode: UniChar = 0x1F63E

“Integer literal'128701'在存储到'UniChar'(又名'UInt16')时溢出”

但如果我使用较短的unicode值初始化,例如:

var unicode: UniChar = 0x2705

一切都很好。

我如何做第一个?

1 个答案:

答案 0 :(得分:0)

函数需要(指针)一个UniChar又名UInt16的数组, 包含字符串的UTF-16表示。 正如@rmaddy所说,UniChar只能保存最大值为0xFFFF的值。 较大的Unicode标量需要表示为“代理对”。

字符串的.utf16视图提供UTF-16表示:

let c = "\u{1F63E}" // Or: let c = ""
let utf16Chars = Array(c.utf16)
event.keyboardSetUnicodeString(stringLength: utf16Chars.count, unicodeString: utf16Chars)