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