ios - 如果在 swift 中设置 bool 时速记崩溃

标签 ios xcode if-statement swift2 shorthand

我实际上有 4 行代码。

var bool = true

let textField1 = UITextField()

let textField2 = UITextField()

bool ? textField1.enabled = false : textField2.enabled = false

上面的代码失败并出现以下错误。

enter image description here

如果我按照以下方式编写代码的工作方式
if bool {

   textField1.enabled = false
}
else {

   textfield2.enabled = false
}

如果我按以下方式编写,那么 if else 的简写方式有效
bool ? print("It's True") : print("It's False")

为什么我的代码失败了?

最佳答案

原因是 Swift 不希望你表现得像这样。因此,它将三进制中的第二项视为 textField2.enabled ,这是一个 bool 值。但是第一个词,textField1.enabled = false , 不是 bool 值;这是一个虚空。

(这就是您的 print 示例有效的原因;这两个术语都是无效的。)

正如 i_am_jorf 所说,您可以通过使用括号消除歧义来解决此问题。

但是,最好不要这样做。你的代码不是很 Swifty。您不应该以这种方式使用三元运算符来产生副作用。您应该将它用于每个术语的结果。这更干净,甚至更短:

(bool ? textField1 : textField2).enabled = false

关于ios - 如果在 swift 中设置 bool 时速记崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39320571/

相关文章:

iphone - 我可以在别人的 iPad 上测试我的 iPad 应用程序吗?

java - 无法使用 JAVA 中的 parse4j API 在 Parse.com 中插入对象

多种模式的awk

android - React Native - Dimensions.set() 不起作用?

ios - Swift 编译器问题 : Compiler doesn't compile long parameters array for Alamofire post request

objective-c - 重新加载 TableView 内容时出现 EXC_BAD_ACCES 错误

iphone - 更新Apple App Store元数据

c - 为什么在构建这个 C 项目时出现所有这些错误?

r - if else 语句和 if_else 的不同行为

c++ - 使用 char 确定输出不起作用