This code worked just fine in Swift 2.3 and I don't understand why I have to unwrap TestClass
to check if number is bigger than 4. This is whole point of chaining optionals, to save additional call.
Now to make this work, I have to check if testClass != nil
(or use implicit unwrap with if let
statement) and then check count.
Is this really the only way?
import UIKit
class testClass
{
var optionalInt:Int?
}
var test:testClass?
if test?.optionalInt > 4
{
}
First of all, where are you initialising your
test
var? Of course it'll be nil if you don't give it a value!And regarding optional chaining, what's the issue writing :
As always, safety > brevity.
This could also happen on Guard statement. Example:
for (playerName, playerLevel) in playerLevels {
}
Optional comparison operators are removed from Swift 3. SE-0121
You need to write something like this:
It's not a bug. It is, alas, intentional. Implicit unwrapping of optionals in comparisons (
>
) has been removed from the language.So, the problem now is that what's on the left side of the
>
is an Optional, and you can no longer compare that directly to4
. You have to unwrap it and get an Int, one way or another.