这一定是一个基本错误,但我不能在这段代码中看到错误:
.... object is some NSManagedObject ....
let eltType = ((object.valueForKey("type")! as! Int) == 0) ? .Zero : .NotZero
在编译时,我收到此消息:
Ambiguous reference to member '=='
将Int与0比较对我来说似乎不明确,所以我错过了什么?
答案 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