それは基本的な間違いであるに違いありませんが、このコードの何が悪いのかわかりません。
.... object is some NSManagedObject ....
let eltType = ((object.valueForKey("type")! as! Int) == 0) ? .Zero : .NotZero
コンパイル時に、次のメッセージが表示されます。
Ambiguous reference to member '=='
Intを0と比較することは私にはあいまいではないようですが、何が欠けていますか?
エラーメッセージは誤解を招くものです。問題は、コンパイラーが値の型.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
ブレスレットを削除すると動作するようです:
let eltType = (object.valueForKey("type")! as! Int) == 0 ? .Zero : .NotZero