Ios 如何在Swift中将整型转换为字符

Ios 如何在Swift中将整型转换为字符,ios,swift,int,character,var,Ios,Swift,Int,Character,Var,我在这里挣扎了十多分钟,失败了,我屈服了。我需要在Swift中将整型转换为字符,但无法解决它 问题 在Swift中如何将Int(整数)转换为字符(字符) 说明性问题/任务挑战 生成用于打印字母“a”到“Z”的for循环,例如: for(var i:Int=0;i<26;i++) { //Important to note - I know print(Character('A' + i)); //this is horrendous syntax..

我在这里挣扎了十多分钟,失败了,我屈服了。我需要在Swift中将整型转换为字符,但无法解决它

问题

在Swift中如何将
Int
(整数)转换为
字符(字符)

说明性问题/任务挑战

生成用于打印字母“a”到“Z”的for循环,例如:

    for(var i:Int=0;i<26;i++) {      //Important to note - I know 
        print(Character('A' + i));   //this is horrendous syntax...
    }                                //just trying to illustrate! :)
for(var i:Int=0;i试试这个

for i in 0...25
{
    let string = String(format: "%c", i+65) as String
    NSLog("%@", string)
}

到目前为止,我已经想到了这个:

for i in 0 ..< 26 {
    print(Character(UnicodeScalar(Int(UnicodeScalar("A").value) + i)))
}

不能将整数直接转换为
字符
实例,但可以从整数转换为
UnicodeScalar
再转换为
字符

let startingValue = Int(("A" as UnicodeScalar).value) // 65
for i in 0 ..< 26 {
    print(Character(UnicodeScalar(i + startingValue)))
}
let startingValue=Int((“A”作为UnicodeScalar.value)//65
对于0..<26中的i{
打印(字符(UnicodeScalar(i+起始值)))
}

有关有用的上下文,请使用vacawama和Nate Cook的UnicodeScalar-

 let startingValue = Int(UnicodeScalar("A").value)
 for i in 0..<26 {
    let itemStr = String(UnicodeScalar(i + startingValue))

    items.append("Item " + itemStr)
}
let startingValue=Int(UnicodeScalar(“A”).value)
对于0中的i..如何在Swift中将Int转换为字符
为了将来的访问者,我提供了问题标题的基本答案,而不是问题本身的细节

这是一个两步过程。将
Int
转换为
UnicodeScalar
,然后将
UnicodeScalar
转换为
字符

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

或者

if let myUnicodeScalar = UnicodeScalar(97) 
    let myCharacter = Character(myUnicodeScalar)
}
另见

这里是Int的一个扩展,用于提供相应的字母函数:

extension Int {
    func correspondingLetter(inUppercase uppercase: Bool = false) -> String? {
        let firstLetter = uppercase ? "A" : "a"
        let startingValue = Int(UnicodeScalar(firstLetter)!.value)
        if let scalar = UnicodeScalar(self + startingValue) {
            return String(scalar)
        }
        return nil
    }
}
请注意,如果int大于26,您将获得特殊字符。

新建和更新

for charac in Unicode.Scalar("A").value...Unicode.Scalar("Z").value {
    print(Unicode.Scalar(charac)!, terminator:" ")}
印刷品:

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
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
感谢@vacawama的帮助,我喜欢这个版本,特别是对于Swift(5),因为:

for charac in Unicode.Scalar("a").value...Unicode.Scalar("z").value {
    print(Unicode.Scalar(charac)!, terminator:" ")}
印刷品:

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
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

不必查找,即使我们应该知道我们的unicode?哈哈等等。

只需将整数转换为字符串,然后将字符串转换为字符

let number = 5
let numChar = Character(String(number))

好吧,好吧……你说得对,我讨厌这样。完成了!这是C风格,如果有人想要的话-for(var I:Int=0;igood catch。我用“items.append”(“items.append”(“Item”@'),itemStr)的建议替换了原来的“items.append(String(format:“Item”@'),itemStr))”不过,UnicodeScalar初始值设定项是可选的,而字符初始值设定项不接受可选值。您必须执行类似于
Character(UnicodeScalar(i+startingValue)!)的操作。