48

This worked in the first beta of Swift.

var degree = "\u00B0" // degree symbol

Now I'm getting this error and I don't understand what I need to do to correct it in Xcode 6 Beta 5.

Expected hexadecimal code in braces after unicode escape
Berry Blue
  • 14,160
  • 17
  • 57
  • 97
  • 2
    Pro Tip: Read the release notes for each Beta release. Oh, the error message was a good one too. – zaph Aug 10 '14 at 03:35

2 Answers2

115

The correct code is:

var degree = "\u{00B0}" // degree symbol

From the Xcode 6 beta 4 release notes:

The \x, \u and \U escape sequences in string literals have been consolidated into a single and less error prone \u{123456} syntax. (17279286)

hashemi
  • 2,528
  • 1
  • 24
  • 31
1

to use a dynamically generated

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)
}
Sergey Shubin
  • 2,689
  • 4
  • 23
  • 29
Alvin
  • 51
  • 9