尝试在Swift中打印表情符号时打印出额外的unicodes

时间:2018-03-22 09:23:47

标签: ios swift debugging unicode

当我尝试打印这样的表情符号时:

print("Incomplete frame ⚠️")

有时它在调试器中打印为:

Incomplete frame ⚠⚠\357️

这个也是如此:

print("Frame not ready  ")

有时(但并非总是!)显示:

Frame not ready  \360\237\222

或者更糟糕的是,像

Frame not ready  \360\237\360\237\360\237\222

为什么会这样?我该如何预防?

1 个答案:

答案 0 :(得分:0)

您必须将Unicode字符串转换为属性字符串,请在字符串扩展名

下使用此字符串
extension String
    func UnicodeToAttributed() -> NSAttributedString? {
        do {

            let data = self.data(using: String.Encoding.utf8, allowLossyConversion: true)
            if let d = data {
                let str = try NSAttributedString(data: d,
                                                 options: [ 
                           NSCharacterEncodingDocumentAttribute: String.Encoding.utf8.rawValue], 
                                                 documentAttributes: nil)
                return str
            }
        } catch {
        }
        return nil
    }

}