我试图制作一款简单的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'
我做错了什么?
答案 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]