首页 > 解决方案 > 有没有办法从 swift 中的 UISwitch 的 IBAction 中将字符串附加到 swift 中的字符串数组?

问题描述

我正在构建一个密码生成器应用程序,我想添加用户可以在生成带有符号的密码之间选择的功能,例如:“!”、“@”、“&”等。我想用 UISwitch 做到这一点。

问题是我在函数内部有一个字符串数组(在函数内部,我拥有使生成器工作的所有代码)。就像下图所示:

我有一个 UISwitch 的 IBAction,我尝试用 if 语句附加一个字符串。就像在下面的屏幕截图中一样:

但它只是行不通。我是 swift 新手,所以有人可以帮我解决这个问题吗?谢谢!

标签: iosswiftxcode

解决方案


几件事。首先,您的words数组是在generatePassword方法内部定义的。所以它只能在那个方法中使用。这就是为什么您在尝试从另一种方法 ( switchSymbols) 访问它时遇到错误的原因。

要解决此问题,请将您的words数组声明为类成员。

class ViewController: UIViewController {
    var words = ["A", "B", "C", "D"]
    
    @IBAction func switchSymbols(_ sender: UISwitch) {
        if sender.isOn {
            words.append(contentsOf: ["!", "@", "$", "&"])
        }
        print(words)
    }
}

现在这个视图控制器中的每个方法都可以访问该数组。

其次,请注意我是如何将words数组var从 a更改为 a 的letlet意味着它是一个常数。声明为的成员let以后不能更改。因此,您将无法向其附加元素。当您将其定义为var(变量)时,您可以。

第三,看到我正在使用append(contentsOf:). 该append(_:)方法仅将单个元素添加到数组中。但是在您的代码中,您将另一个数组直接添加到words数组中。要将一个数组的内容添加到另一个数组,请使用该append(contentsOf:)方法。


推荐阅读