对会员' =='的模棱两可的提及

时间:2016-07-19 03:43:41

标签: ios swift operators arithmetic-expressions

这一定是一个基本错误,但我不能在这段代码中看到错误:

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

在编译时,我收到此消息:

Ambiguous reference to member '=='

将Int与0比较对我来说似乎不明确,所以我错过了什么?

2 个答案:

答案 0 :(得分:44)

错误消息具有误导性。问题是编译器有 没有信息.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

答案 1 :(得分:0)

删除手镯似乎有效:

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