#utf-8 #swift
#utf-8 #swift
Вопрос:
У меня возникают проблемы со специальными символами при использовании JSON в xcode 6 с swift
Я нашел эти коды в Cocoa / objective C для решения некоторых проблем с преобразованием акцента, но не смог заставить его работать в Swift. Есть предложения по его использованию? … лучшие альтернативные предложения также были бы классными…
Спасибо
NSString *input = @"\u5404\u500b\u90fd";
NSString *convertedString = [input mutableCopy];
CFStringRef transform = CFSTR("Any-Hex/Java");
CFStringTransform((__bridge CFMutableStringRef)convertedString, NULL, transform, YES);
NSLog(@"convertedString: %@", convertedString);
// prints: 各個都, tada!
Комментарии:
1. Покажите попытку, которую вы предприняли для преобразования кода.
Ответ №1:
В Swift это довольно похоже, хотя вам все равно нужно использовать базовые классы строк:
let transform = "Any-Hex/Java"
let input = "\u5404\u500b\u90fd" as NSString
var convertedString = input.mutableCopy() as NSMutableString
CFStringTransform(convertedString, nil, transform as NSString, 1)
println("convertedString: (convertedString)")
// convertedString: 各個都
(Последний параметр бросил меня в цикл, пока я не понял, что Boolean
в Swift это псевдоним типа для UInt — YES в Objective-C становится 1 в Swift для этих типов методов.)
Комментарии:
1. У меня такая же проблема с чтением регулярных выражений из файла plist ( получает экранированный результат \). Используя ваше решение, я получаю изменения только тогда, когда значение выводится на консоль, но переменная, как я вижу ее в отладке, остается прежней. Как мне получить неэкранированные символы для использования в моем коде?
Ответ №2:
Быстрое 4-струнное расширение
extension String {
var unescapingUnicodeCharacters: String {
let mutableString = NSMutableString(string: self)
CFStringTransform(mutableString, nil, "Any-Hex/Java" as NSString, true)
return mutableString as String
}
}
Ответ №3:
Быстрый 3
let transform = "Any-Hex/Java"
let input = "\u5404\u500b\u90fd" as NSString
var convertedString = input.mutableCopy() as! NSMutableString
CFStringTransform(convertedString, nil, transform as NSString, true)
print("convertedString: (convertedString)")
// convertedString: 各個都