在swift中将用户输入转换为Ints数组

时间:2014-12-16 09:06:00

标签: ios xcode swift int character

我试图制作一款简单的iOS游戏,以便在swift中学习编程。 用户在文本字段中输入一个4位数字(键盘类型数字键盘,如果这很重要),我的程序应该取4位数字并将每个数字放在一个数组中。 基本上我想要像

这样的东西
userInput = "1234"

成为

inputArray = [1,2,3,4]

我知道在swift

中将字符串转换为字符数组非常容易
var text : String = "BarFoo"
var arrayText = Array(text)
//returns ["B","a","r","F","o","o"]

我的问题是我需要用数组来填充整数,而不是字符。 如果我将用户输入转换为Int,它将变为单个数字,因此如果用户输入" 1234"数组由[1234]而不是[1,2,3,4]

填充

所以我尝试将用户输入视为字符串,创建其字符数组,然后循环遍历该数组的元素,将它们转换为Ints并将它们放入第二个数组中,如:

var input : String = textField.text
var inputArray = Array(input)
var intsArray = [Int]()

for var i = 0; i < inputArray.count ; i++ {
    intsArray[i] = inputArray[i].toInt()
}

但它没有编译并给我错误:'Character' does not have a member named 'toint'

我做错了什么?

3 个答案:

答案 0 :(得分:4)

您可以使用:

let text : String = "123a"
let digits = Array(text).map { String($0).toInt()! }
// Crash if any character is not int

但如果输入无效,它会崩溃。

您可以通过查看toInt()

的结果进行验证
let text : String = "1234"
var digits = Array(text).reduce([Int](), combine: { (var digits, optionalDigit) -> [Int] in
    if let digit = String(optionalDigit).toInt() {
        digits.append(digit)
    }

    return digits
})

if countElements(text) == digits.count {
    // all digits valid
} else {
    // has invalid digits
}

答案 1 :(得分:1)

对于未来的用户来说,这是一个更简单的解决方案

let text : String = "12345"
var digits = [Int]()
for element in text.characters 
{
    digits.append(Int(String(element))!)
}

答案 2 :(得分:0)

将字符串转换为[Int]扩展名 - Swift版本

我在下面的扩展程序中允许您将kwargs.pop()转换为String。 这是一个很长的版本,你可以看到你的字符串在每一行中发生了什么。

[Int]