Ios 将表情符号从JSON字符串转换为字符

Ios 将表情符号从JSON字符串转换为字符,ios,swift,swift4,emoji,Ios,Swift,Swift4,Emoji,我正在尝试将表情符号编码字符串从JSON字符串转换为字符。有些表情符号正在转换,有些则没有 我正在使用的函数: extension String { var decodeEmoji: String? { let data = self.data(using: String.Encoding.utf8) let decodedStr = NSString(data: data!, encoding: String.Encoding.nonLossyASCII.rawValue)

我正在尝试将表情符号编码字符串从JSON字符串转换为字符。有些表情符号正在转换,有些则没有

我正在使用的函数:

extension String {
var decodeEmoji: String? {
    let data = self.data(using: String.Encoding.utf8)
    let decodedStr = NSString(data: data!, encoding: String.Encoding.nonLossyASCII.rawValue)
    if decodedStr != nil {
        return decodedStr as String?
    }
    return self
    }
}


JSON string: Altre novità in arrivo oggi...  \ud83d\udcaa\ud83c\udffb
\ud83d\udcaa\ud83c\udffb
”是的表情符号字符串。请参见此项,或使用
NSAttributedString

NSAttributedString * attrStr = [[NSAttributedString alloc] initWithData:[text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];
例如,为
UILabel

@implementation UILabel (Emotion)

- (void)setHtmlText:(NSString *)text
{
    self.text = text;

    NSDictionary *attributes = [self.attributedText attributesAtIndex:0 longestEffectiveRange:nil inRange:NSMakeRange(0, self.attributedText.length)];

    NSMutableAttributedString * attrStr = [[NSMutableAttributedString alloc] initWithData:[text dataUsingEncoding:NSUnicodeStringEncoding] options:@{ NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType } documentAttributes:nil error:nil];

    [attrStr addAttributes:attributes range:NSMakeRange(0, attrStr.length)];

    self.attributedText = attrStr;
}

@end

所有JSON解码器(JSONDecoder、JSONSerialization)都会自动处理……
String.Encoding.nonlossySASCII.rawValue
-为什么是ASCII?@Vinodh,在中编辑的Swift版本看起来根本不像Objective C版本。如果你想展示你的想法,你应该把它贴在你自己的答案上。这不是我的主意。答案中提到了@Alexey Kudlay提到的内容。请阅读,然后开始责骂me@Vinodh,是的,他提到了另一个答案作为链接,但您的编辑将两个完全不同的代码段标记为ObjC和Swift版本的答案。它们不是版本,而是两种不同的解决方案!并且可以用目标C和Swift表示。请还原原始版本answer@Vinodh我试过了,但没有得到同行的认可。