I\'ve struggled and failed for over ten minutes here and I give in. I need to convert an Int to a Character in Swift and cannot solve it.
Question<
For helpful context, taking vacawama's and Nate Cook's UnicodeScalar to use -
let startingValue = Int(UnicodeScalar("A").value)
for i in 0..<26 {
let itemStr = String(UnicodeScalar(i + startingValue))
items.append("Item " + itemStr)
}
For the sake of future visitors, I am providing a basic answer to the question title rather than the details of the question itself.
It is a two step process. Convert the Int
to a UnicodeScalar
and then convert the UnicodeScalar
to a Character
.
let myInteger: Int = 97
// convert Int to a valid UnicodeScalar
guard let myUnicodeScalar = UnicodeScalar(myInteger) else {
return
}
// convert UnicodeScalar to Character
let myCharacter = Character(myUnicodeScalar)
// results
print(myCharacter) // a
(source)
Or alternatively...
if let myUnicodeScalar = UnicodeScalar(97)
let myCharacter = Character(myUnicodeScalar)
}
New and updated
for charac in Unicode.Scalar("A").value...Unicode.Scalar("Z").value {
print(Unicode.Scalar(charac)!, terminator:" ")}
prints:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
thx for the help from @vacawama, I like this version, for Swift(5) especially because of:
for charac in Unicode.Scalar("a").value...Unicode.Scalar("z").value {
print(Unicode.Scalar(charac)!, terminator:" ")}
prints:
a b c d e f g h i j k l m n o p q r s t u v w x y z
and not having to look up, even tho we should know our unicode? haha etc...
try this
for i in 0...25
{
let string = String(format: "%c", i+65) as String
NSLog("%@", string)
}
So far I've come up with this:
for i in 0 ..< 26 {
print(Character(UnicodeScalar(Int(UnicodeScalar("A").value) + i)))
}
If you're just trying to generate "A" to "Z", you can avoid the math and just do:
for c in UnicodeScalar("A").value...UnicodeScalar("Z").value {
print(String(UnicodeScalar(c)))
}
Simply convert the integer into String, then convert string into Character
let number = 5
let numChar = Character(String(number))