Ce doit être une erreur de base, mais je ne vois pas ce qui ne va pas dans ce code:
.... object is some NSManagedObject ....
let eltType = ((object.valueForKey("type")! as! Int) == 0) ? .Zero : .NotZero
Au moment de la compilation, je reçois ce message:
Ambiguous reference to member '=='
Comparer un Int à 0 ne me semble pas ambigu, alors qu'est-ce qui me manque?
Le message d'erreur est trompeur. Le problème est que le compilateur n'a aucune information sur le type des valeurs .Zero
, .NotZero
faire référence à.
Le problème est également indépendant des objets gérés ou de la méthode valueForKey
, vous obtiendrez le même message d'erreur pour
func foo(value: Int) {
let eltType = value == 0 ? .Zero : .NotZero // Ambiguous reference to member '=='
// ...
}
Le problème peut être résolu en spécifiant une valeur entièrement typée
let eltType = value == 0 ? MyEnum.Zero : .NotZero
ou en fournissant un contexte à partir duquel le compilateur peut déduire le type:
let eltType: MyEnum = value == 0 ? .Zero : .NotZero
Retirer le bracelet semble fonctionner:
let eltType = (object.valueForKey("type")! as! Int) == 0 ? .Zero : .NotZero