That must be a basic mistake, but I can't see what is wrong in this code:
.... object is some NSManagedObject ....
let eltType = ((object.valueForKey("type")! as! Int) == 0) ? .Zero : .NotZero
At compile time, I get this message:
Ambiguous reference to member '=='
Comparing an Int to 0 doesn't seem ambiguous to me, so what am I missing?
The error message is misleading. The problem is that the compiler has
no information what type the values .Zero, .NotZero refer to.
The problem is also unrelated to managed objects or the valueForKey
method, you would get the same error message for
func foo(value: Int) {
let eltType = value == 0 ? .Zero : .NotZero // Ambiguous reference to member '=='
// ...
}
The problem can be solved by specifying a fully typed value
let eltType = value == 0 ? MyEnum.Zero : .NotZero
or by providing a context from which the compiler can infer the type:
let eltType: MyEnum = value == 0 ? .Zero : .NotZero
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With