:我遇到了一些我无法在以下代码中解释的内容:
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.isEmpty
是someString == ""
的语法糖。但事实似乎并非如此。
答案 0 :(得分:0)
On" strange"行为,始终,对简单表单进行测试。 入住游乐场:
let a = "" // ""
let b = Optional<String>.None // nil
a == "" && b == nil // true
a.isEmpty && b == nil // true
Apple Swift版本2.1.1