Mic*_*hel 25 arithmetic-expressions operators ios swift
这一定是一个基本错误,但我看不出这段代码有什么问题:
.... object is some NSManagedObject ....
let eltType = ((object.valueForKey("type")! as! Int) == 0) ? .Zero : .NotZero
Run Code Online (Sandbox Code Playgroud)
在编译时,我收到此消息:
Ambiguous reference to member '=='
Run Code Online (Sandbox Code Playgroud)
将Int与0比较对我来说似乎并不含糊,所以我错过了什么?
Mar*_*n R 44
错误消息具有误导性.问题是,编译器有没有什么信息键入数值.Zero,.NotZero参考.
该问题也与托管对象或valueForKey
方法无关,您将收到相同的错误消息
func foo(value: Int) {
let eltType = value == 0 ? .Zero : .NotZero // Ambiguous reference to member '=='
// ...
}
Run Code Online (Sandbox Code Playgroud)
可以通过指定完全类型的值来解决该问题
let eltType = value == 0 ? MyEnum.Zero : .NotZero
Run Code Online (Sandbox Code Playgroud)
或者通过提供编译器可以推断出类型的上下文:
let eltType: MyEnum = value == 0 ? .Zero : .NotZero
Run Code Online (Sandbox Code Playgroud)