由于条件绑定错误的初始化程序,无法将文本附加到字符串数组

时间:2017-11-21 23:18:51

标签: ios arrays swift string append

如果我切换整数字符串,下面的代码可以很好地工作。但是使用String它不起作用。

import UIKit

class ViewController: UIViewController {
@IBOutlet var txt: UITextField!
var arrayOfInt = [String]()

@IBAction func submit(_ sender: Any) {
    if let text = txt.text {
    if let name = String(text){
        arrayOfInt.append(name)
    }}}

}

1 个答案:

答案 0 :(得分:0)

您(不必要地)使用StringString初始化String(text);与Int(_ string:String)不同,这不是可用的初始化程序

有可能String无法解析为Int,因此您需要检查Int(text)是否未返回nil,而是String {1}}始终可以从String初始化。

当你说

if let name = String(text) {

编译器给出错误,因为if let...条件绑定构造需要可选,但String(text)不返回可选项。

您的代码可以简化为:

class ViewController: UIViewController {

    @IBOutlet var txt: UITextField!
    var arrayOfString = [String]()

    @IBAction func submit(_ sender: Any) {
        if let text = sender.text {
            arrayOfString.append(text)
        }
    }
}