Ответ 1
Сообщение об ошибке вводит в заблуждение. Проблема в том, что компилятор имеет
нет информации о том, к какому типу относятся значения .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