Проверка кода ошибки NSE: двоичный оператор '==' нельзя применить к двум операндам Int

Может кто-нибудь сказать мне, что я здесь делаю не так? "ошибка" - это ошибка NSError, возвращенная из CloudKit.

if error.code == Int(CKErrorCode.NetworkFailure) {
    //do something
}

Дает мне эту ошибку:

Двоичный оператор '==' нельзя применять к двум операндам Int

Если я сделаю это, все работает нормально:

if error.code == 4 {
    //do something
}

Где 4 - фактический код ошибки.

1 ответ

Решение

Проблема здесь в том, что Int не имеет конструктора, который принимает CKErrorCode в качестве ввода.

Как и в комментариях, способ сравнения двух значений:

if error.code == CKErrorCode.NetworkFailure.rawValue {
    //do something
}

К счастью, сообщения об ошибках были улучшены для XCode 7 и Swift 2, так что вы увидите:

Невозможно вызвать инициализатор для типа "Int" со списком аргументов типа "(CKErrorCode)"

Что является гораздо лучшим показателем того, что пошло не так.

Другие вопросы по тегам