ios - 有没有办法从 swift 中的 UISwitch 的 IBAction 中将字符串附加到 swift 中的字符串数组?
问题描述
我正在构建一个密码生成器应用程序,我想添加用户可以在生成带有符号的密码之间选择的功能,例如:“!”、“@”、“&”等。我想用 UISwitch 做到这一点。
问题是我在函数内部有一个字符串数组(在函数内部,我拥有使生成器工作的所有代码)。就像下图所示:
我有一个 UISwitch 的 IBAction,我尝试用 if 语句附加一个字符串。就像在下面的屏幕截图中一样:
但它只是行不通。我是 swift 新手,所以有人可以帮我解决这个问题吗?谢谢!
解决方案
几件事。首先,您的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 的let
。let
意味着它是一个常数。声明为的成员let
以后不能更改。因此,您将无法向其附加元素。当您将其定义为var
(变量)时,您可以。
第三,看到我正在使用append(contentsOf:)
. 该append(_:)
方法仅将单个元素添加到数组中。但是在您的代码中,您将另一个数组直接添加到words
数组中。要将一个数组的内容添加到另一个数组,请使用该append(contentsOf:)
方法。
推荐阅读
- javascript - 多次从承诺中获得相同的响应
- node.js - 如何(甚至可能)更改 Config 系统文件的值?
- javascript - 内容脚本和后台脚本之间的 Chrome.runtime.sendmessage 有时不起作用
- reactjs - 通过反应获得最近的加油站
- asp.net-core - 如何配置独立的 Blazor WebAssembly 应用程序以允许传入的跨源重定向?
- php - 我无法获取 img src 路径未在邮件中加载
- hash - DB2 更改表并添加哈希
- javascript - 表单验证和页面调用
- python - 将两个长度不等的 dfs 与匹配的索引子集合并
- bluetooth - 蓝牙和 BLE 配置文件