【发布时间】:2017-08-15 01:29:16
【问题描述】:
我遇到了关于开关按钮默认值的问题。如果不使用切换按钮,Xcode 会给出错误“在展开可选值时意外发现 nil”。如果不使用切换按钮,我需要将默认值设置为 true 或 false。我找到了一些关于这个问题的文章,但它们对我没有用。
我的开关按钮是通过故事板初始化的:
@IBAction func FußballPreferenzSwitch(_ sender: UISwitch) {
if (sender.isOn == true) {
FußballPreferenz = "Ja"
}else {
FußballPreferenz = "Nein"
}
}
以下解决方案不适合我,因为我没有钥匙,或者至少我不知道钥匙是什么。
在 applicationDidFinishLaunching 中,他们建议编写以下代码:
let userDefaults = UserDefaults.standard
let defaultValues : [String : Any] = ["key" : false]
userDefaults.register(defaults: defaultValues)
我需要如何更改以下代码才能将其用于我的目的? 或者有没有其他方法可以解决这个问题?
【问题讨论】:
-
未使用是什么意思?您可以直接在 Interface Builder 中设置默认值。
-
这意味着,按钮没有被触摸。当按钮没有被触摸时,开关按钮的布尔值应该为真,这样变量“FußballPreferenz”就等于=“Ja”。
-
不清楚你要完成什么。切换后是否要保留该值?为什么以及何时会出现 unexpected found ... 错误?
-
当我实现切换按钮时,它的布尔值为真(切换按钮为绿色)。用户可以使用切换按钮来决定他喜欢足球(切换按钮是绿色/值=true)还是不喜欢它(按钮是白色/值=false)。所以如果用户打开视图控制器,切换按钮默认是绿色的。因此,如果他喜欢足球,则无需切换按钮。如果我现在将此信息发送到我的 Firebase 控制台,我会收到致命错误“在展开可选值时意外发现 nil”。
-
在 Interface Builder 中设置默认值 (true)。崩溃的发生很可能是因为
IBAction未在 IB 中正确连接。如果开关的状态保存在 FireBase 中,则您不需要UserDefaults,但您需要从 FireBase 读取值并在应用程序启动时更新开关(或当控制器将出现时)。顺便说一句:在 Swift 中,if表达式不需要括号,在布尔求值之后也不需要== true。
标签: ios swift3 boolean uiswitch