Ожидаемый шестнадцатеричный код в фигурных скобках после выхода из Юникода
Это работало в первой бета-версии Swift.
var degree = "\u00B0" // degree symbol
Теперь я получаю эту ошибку, и я не понимаю, что мне нужно сделать, чтобы исправить ее в Xcode 6 Beta 5.
Expected hexadecimal code in braces after unicode escape
3 ответа
Решение
Правильный код:
var degree = "\u{00B0}" // degree symbol
Из примечаний к выпуску Xcode 6 beta 4:
Экранирующие последовательности \x, \u и \U в строковых литералах были объединены в единый и менее подверженный ошибкам синтаксис \u{123456}. (17279286)
Использовать динамически генерируемый
extension String {
func hexToDecimal() -> String {
var myValue = self
if self.hasPrefix("0x") || self.hasPrefix("0X") {
let start = self.index(self.startIndex, offsetBy: 2)
myValue = String(self[start...])
}
var sum = 0
for num in myValue.uppercased().utf8 {
sum = sum * 16 + Int(num) - 48
if num >= 65 {
sum -= 7
}
}
return String(sum)
}
}
let unicodeValue = "80" // decimal
// or
let unicodeValue = "0x50".hexToDecimal()
if let uInt8 = UInt8(unicodeValue) {
let scalar = UnicodeScalar(uInt8)
let str = String(scalar)
}
Используя эти строки кода, мы можем преобразовать шестнадцатеричный текст в соответствующий символ.
private func getDecodedUrl(url: String) -> String {
let str: String = url.replacingOccurrences(of: "'\'", with: "\\")
return str
}
let webUrl = NSMutableString( string: self.getDecodedUrl(url: convertedString) )
CFStringTransform( webUrl, nil, "Any-Hex/Java" as NSString, true)
print(webUrl)