Ios 将用户输入转换为swift中的整数数组
我正在尝试制作一个简单的iOS游戏来学习用swift编程。 用户在文本字段键盘类型的数字键盘中输入一个4位数的数字,如果这很重要的话,我的程序应该采用这4位数,并将每个数字放入一个数组中。 基本上我想要的是Ios 将用户输入转换为swift中的整数数组,ios,xcode,swift,int,character,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",
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]填充
因此,我尝试将用户输入视为字符串,创建一个字符数组,然后循环该数组的元素,将它们转换为int,并将它们放入第二个数组,如:
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”没有名为“toint”的成员
我做错了什么?您可以使用:
let text : String = "123a"
let digits = Array(text).map { String($0).toInt()! }
// Crash if any character is not int
但如果输入无效,它将崩溃
您可以通过检查toInt的结果进行验证:
您可以使用:
let text : String = "123a"
let digits = Array(text).map { String($0).toInt()! }
// Crash if any character is not int
但如果输入无效,它将崩溃
您可以通过检查toInt的结果进行验证:
将字符串转换为[Int]扩展名-Swift版本
我在下面添加了扩展名,允许您将字符串转换为[Int]。
这是一个长版本,您可以使用字符串查看每行中发生的情况
extension String {
func convertToIntArray() -> [Int]? {
var ints = [Int]()
for char in self.characters {
if let charInt = char.convertToInt() {
ints.append(charInt)
} else {
return nil
}
}
return ints
}
}
extension Character {
func convertToInt() -> Int? {
return Int(String(self)) ?? nil
}
}
将字符串转换为[Int]扩展名-Swift版本
我在下面添加了扩展名,允许您将字符串转换为[Int]。
这是一个长版本,您可以使用字符串查看每行中发生的情况
extension String {
func convertToIntArray() -> [Int]? {
var ints = [Int]()
for char in self.characters {
if let charInt = char.convertToInt() {
ints.append(charInt)
} else {
return nil
}
}
return ints
}
}
extension Character {
func convertToInt() -> Int? {
return Int(String(self)) ?? nil
}
}
对于未来的用户,这里有一个更简单的解决方案
let text : String = "12345"
var digits = [Int]()
for element in text.characters
{
digits.append(Int(String(element))!)
}
对于未来的用户,这里有一个更简单的解决方案
let text : String = "12345"
var digits = [Int]()
for element in text.characters
{
digits.append(Int(String(element))!)
}
如果需要1234而不是1,2,3,4,则不需要数组。1234是一个整型值。如果您想要1234而不是1,2,3,4,则不需要数组。1234是一个单整数值。非常感谢,第一段代码就足够了,因为用户只能输入整数,因为我将文本字段键盘类型设置为数字键盘。是的,这是从字符串中获取字符的正确方法。非常感谢,第一段代码就足够了,因为用户只能输入整数,因为我将文本字段键盘类型设置为数字键盘。是的,这是从字符串中获取字符的正确方法。