Неужели кто-нибудь сталкивается с футляром, похожим на то, что показывает моя фотография внизу?В Swift, когда false означает true
У меня есть переменная landingBools.didSlowPast40Knots
, которая (как вы можете видеть из отладочной распечатки) имеет значение false, но по какой-либо причине утверждение if оценивается как истина.
Любые идеи, почему это происходит? Или это просто случайная ошибка?
Похоже, я не уточняя тип ... я буду стараться сделать их: Bool
struct LandingBOOLs {
var didDepart : Bool = false
var didLand : Bool = false
var didSpeedOver40Knots : Bool = false
var didSlowPast40Knots : Bool = false
func isLanded() -> Bool {
return didDepart & didLand & didSpeedOver40Knots & didSlowPast40Knots
}
}
Followup
Я изменил мой код:
if (lastPhase == .Descend && phaseOfFlightString == .LevelFlight) {
if (landingBools.didDepart) {
if (landingBools.didSlowPast40Knots) {
let landed = landingBools.didLand
if (landed) {
NSNotificationCenter.defaultCenter().postNotificationName("LANDED", object: self)
}
}
}
}
теперь я смущен, потому что моя функция:
func isLanded() -> Bool {
return didDepart & didLand & didSpeedOver40Knots & didSlowPast40Knots
}
поэтому не должны позволить выяснить его логическое значение и не присвоить ему значение 128? Нужно ли делать & & вместо &?
Является ли ваш 'didSlowPast40Knots'' NSNumber' ложным как значение (эквивалентно '@ NO' в ObjC) или он является скалярным типом как' bool'? Также - как выглядит ваше объявление о собственности? – Eimantas
Можете ли вы зарегистрировать значение landingBools.didSlowPast40Knots раньше, если проверить и зарегистрировать еще один внутри if и добавить else с последним журналом значения. Я считаю, что это правда, но журнал с консоли может отображать не самые ожидаемые значения. Вы также можете изменить условие, добавив == true. – Greg
Как с Грегом, я был бы более склонен полагать, что lldb действовал; Я видел некоторые странные результаты с Swift. Попробуйте подтвердить '' println'' или '' NSLog''. (Кроме того, попробуйте очистить и перестроить свой проект, я полагаю, есть вероятность, что отладочные символы/источник не синхронизированы с фактическим кодом ...) –