对成员“==”的不明确引用

Ambiguous reference to member '=='

那一定是个基本错误,但我看不出这段代码有什么问题:

.... object is some NSManagedObject ....
let eltType = ((object.valueForKey("type")! as! Int) == 0) ? .Zero : .NotZero

在编译时,我收到这条消息:

Ambiguous reference to member '=='

将 Int 与 0 进行比较对我来说并没有歧义,所以我错过了什么?

移除手镯似乎有效:

let eltType = (object.valueForKey("type")! as! Int) == 0 ? .Zero : .NotZero

错误消息具有误导性。问题是编译器有 没有信息 .Zero.NotZero 指的是什么类型。

该问题也与托管对象或 valueForKey 无关 方法,您会收到与

相同的错误消息
func foo(value: Int) {
    let eltType = value == 0 ? .Zero : .NotZero // Ambiguous reference to member '=='
    // ...
}

可以通过指定一个完全类型化的值来解决这个问题

let eltType = value == 0 ? MyEnum.Zero : .NotZero

或者通过提供编译器可以推断类型的上下文:

let eltType: MyEnum = value == 0 ? .Zero : .NotZero