Проверка кода ошибки 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)"
Что является гораздо лучшим показателем того, что пошло не так.