Good evening lovely community,
this is my first post, please have mercy, if I do something wrong.
I know there are some similar questions here, but I doesn\'t under
This error can also occur if you are comparing a custom type (ie: struct or class) for which you haven't implemented the Comparable protocol.
Well, by using guard statement you can check if both values are not nil, and converting it to Int typ
guard let value_one = Int(goalPlayerOne), let value_two = Int(goalPlayerTwo) else {
print("Some value is nil")
return
}
so you can safely compare two values.
if value_one < value_two {
//Do something
}
If you look at the declaration for Int
's initializer that takes a String
, you can see by the ?
after init
that it returns an optional:
convenience init?(_ description: String)
This means you have to unwrap it before you can do most things with it (==
is an exception, since the Optional
type has an overload for that operator).
There are four main ways to unwrap your optionals:
if let goalOne = Int(someString) {
// do something with goalOne
}
guard let goalOne = Int(someString) else {
// either return or throw an error
}
// do something with goalOne
map
and/or flatMap
let someValue = Int(someString).map { goalOne in
// do something with goalOne and return a value
}
let goalOne = Int(someString) ?? 0 // Or whatever the default value should be
If you unwrap all your optionals, you'll be able to compare them as you expect.