How to check for nil
in while loop in Swift? I\'m getting error on this:
var count: UInt = 0
var view: UIView = self
while view.superview != nil { /
The syntax of while
allows for optional binding. Use:
var view: UIView = self
while let sv = view.superview {
count += 1
view = sv
}
[Thanks to @ben-leggiero for noting that view
need not be Optional
(as in the question itself) and for noting Swift 3 incompatibilities]
Your code cannot compile. nil
can only appear in optionals.
You need to declare view
with optional, var view: UIView? = self.superview
.
Then compare it with nil
in the while-loop.
var count: UInt = 0
var view: UIView? = self.superview
while view != nil { // Cannot invoke '!=' with an argument list of type '(@lvalue UIView, NilLiteralConvertible)'
count++
view = view!.superview
}
Or do a let
binding, But it seems not necessary here, I think.