Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 将用户输入转换为swift中的整数数组_Ios_Xcode_Swift_Int_Character - Fatal编程技术网

Ios 将用户输入转换为swift中的整数数组

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

我正在尝试制作一个简单的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]填充

因此,我尝试将用户输入视为字符串,创建一个字符数组,然后循环该数组的元素,将它们转换为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是一个单整数值。非常感谢,第一段代码就足够了,因为用户只能输入整数,因为我将文本字段键盘类型设置为数字键盘。是的,这是从字符串中获取字符的正确方法。非常感谢,第一段代码就足够了,因为用户只能输入整数,因为我将文本字段键盘类型设置为数字键盘。是的,这是从字符串中获取字符的正确方法。