swift - Swift 中的 bool 逻辑异常?

标签 swift boolean-logic boolean-expression

:我遇到了以下代码中无法解释的问题:

        let isEmptyString = reminderNotesTextInput.text == ""
        print(isEmptyString)        // TRUE
        let isNilNote = reminderWrapper?.reminder.notes == nil
        print(isNilNote)            // TRUE
        print((reminderNotesTextInput.text == "") && (reminderWrapper?.reminder.notes == nil))  // FALSE!!!!!!!!
        if (reminderNotesTextInput.text == "") && (reminderWrapper?.reminder.notes == nil) {
            print("this doesn't get executed")
        }
        print(isEmptyString && isNilNote)   // TRUE

reminderNotesTextInput 是一个 UITextView。 reminderWrapper 是 EKReminder 的包装类(即,它有一个名为 EKReminder 类型的提醒的属性):

// Needed for the Equatable protocol
func ==(lhs: ReminderWrapper, rhs: ReminderWrapper) -> Bool {
    return lhs.name == rhs.name
}

class ReminderWrapper: Equatable {
    var name: String
    var reminder: EKReminder

    init(name: String, reminder: EKReminder) {
        self.name = name
        self.reminder = reminder
    }
}

编辑: 我成功了。但我不明白为什么现在这样有效。

    let isEmptyString = reminderNotesTextInput.text.isEmpty
    print(isEmptyString)        // TRUE
    let isNilNote = reminderWrapper?.reminder.notes == nil
    print(isNilNote)            // TRUE
    print((reminderNotesTextInput.text.isEmpty) && (reminderWrapper?.reminder.notes == nil))  // THIS NOW IS ALSO TRUE!!!!!!!!

我本以为 someString.isEmptysomeString == "" 的语法糖。但事实似乎并非如此。

最佳答案

对于“奇怪”的行为,总是,在简单的表单上进行测试。 checkin Playground :

let a = "" // ""
let b = Optional<String>.None // nil

a == "" && b == nil // true
a.isEmpty && b == nil // true

Apple Swift 版本 2.1.1

关于swift - Swift 中的 bool 逻辑异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35143245/

相关文章:

boolean-logic - bool 代数简化

c++ - 我应该使用 "&&"还是 "and"?

c++在 bool 模式下搜索文本

python - Python 中的 bool 表达式还是字符串?总是返回 'True'

ios - 如何根据 UIAlertController 中的 UITextField 禁用 UIAlertAction?

ios - Swift 中 UITableView 的奇怪行为

python - 如何获得 Pandas 系列的元素逻辑非?

ios - Swift - 从 Double 中删除尾随零

cocoa - 如何将关键事件发送到没有快速焦点的 NSTextField

boolean - 如何将产生 boolean 值的 cond 语句转换为仅涉及 not、and 和 or 的表达式