Swift 2.1 ErrorType не соответствует протоколу RawRepresentable
Я объявил тип ошибки
enum UserServicesError: ErrorType {
case UserNotLogged
}
но я получаю ошибку
Argument type 'UserServicesError' does not conform to expected type 'ErrorType'
Type 'UserServicesError' does not conform to protocol 'RawRepresentable'
Есть идеи у? Официальная документация гласит, что этой декларации достаточно.
2 ответа
Я наконец понял это. Я объявил enum ErrorType в классе общего доступа Objective-C с ранних времен.
typedef NS_ENUM(NSUInteger, ErrorType) {
...
};
Я ожидаю увидеть Redefined type error
скорее, чем does not conform to protocol 'RawRepresentable'
Вы случайно не используете UserServicesError
с классами какао? Если это так, то в подразделе " Использование ошибок" руководства Swift с какао и Objective-C предполагается, что его следует объявить так:
@objc enum UserServicesError: Int, ErrorType {
case UserNotLogged
}
@objc
обозначение необходимо для любых протоколов, которые взаимодействуют с объектами Какао Objective-C. В соответствии с Int
(или какой-то другой RawRepresentable
Соответствующий тип) получает вас RawRepresentable
соответствие автоматически (вместо того, чтобы оставить его чистым Swift enum
).
Надеюсь, это поможет. Если это произойдет, дайте мне знать, если это было одно, другое или оба необходимо исправить это. Мне любопытно.:-)