Swift中的布尔逻辑异常?

Swift中的布尔逻辑异常?,swift,boolean-logic,boolean-expression,Swift,Boolean Logic,Boolean Expression,:我遇到了以下代码中无法解释的问题: let isEmptyString = reminderNotesTextInput.text == "" print(isEmptyString) // TRUE let isNilNote = reminderWrapper?.reminder.notes == nil print(isNilNote) // TRUE print((rem

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

        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。ReminderRapper是EKReminder的包装类(即,它有一个名为EKReminder类型的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.isEmpty
someString==”
的语法糖。但事实似乎并非如此。

关于“奇怪”行为,总是以简单的形式进行测试。 入住操场:

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

a == "" && b == nil // true
a.isEmpty && b == nil // true
让a=“”/”“
设b=可选。无//无
a==“”&&b==nil//true
a、 isEmpty&&b==nil//true

苹果Swift 2.1.1版

你能为我们把这句话概括成一句话吗?由于我们既没有
rementernotestextinput
也没有
rementerrapper
,因此我们无法轻松复制此内容。我为rementerrapper添加了代码。如上所述,reminderNotesTextInput是我的故事板中的UITextView。我发布的代码片段中不会有任何副作用,但是发生了一些奇怪的事情……您是否尝试过将
(rementernotestinput.text==“”)和&(rementerrapper?.rementer.notes==nil)
移动到if语句中,看看它是否也返回false?您是否尝试过使用
ismptystring&&isNilNote
?是的。请。见修改后的代码。同意。然而,这并不能解释这种奇怪的行为本身。为什么不跟我一样?@丹尼尔也一样
a.isEmpty&&a==“true
。另外:isEmpty–“true”iff“self”不包含任何字符。
let a = "" // ""
let b = Optional<String>.None // nil

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