Я указал тип ошибки

enum UserServicesError: ErrorType {
    case UserNotLogged
}

Но я получаю ошибку

Argument type 'UserServicesError' does not conform to expected type 'ErrorType'

Type 'UserServicesError' does not conform to protocol 'RawRepresentable'

Есть идеи? Официальная документация говорит, что этого заявления достаточно.

Документация по устранению ошибок Apple Swift 2.1

1
Aleš Oskar Kocur 21 Окт 2015 в 12:40

2 ответа

Лучший ответ

Я наконец понял это. Я объявил enum ErrorType в общем классе objective-c еще до быстрой разработки.

typedef NS_ENUM(NSUInteger, ErrorType) {
   ...
};

Я ожидал увидеть Redefined type error, а не does not conform to protocol 'RawRepresentable'

2
Aleš Oskar Kocur 26 Окт 2015 в 08:53

Вы случайно не используете UserServicesError с классами Какао? Если да, то в подразделе «Ошибки» Руководство по использованию Swift с Cocoa и Objective-C предлагает его объявить следующим образом:

@objc enum UserServicesError: Int, ErrorType {
    case UserNotLogged
}

Обозначение @objc необходимо для любых протоколов, которые взаимодействуют с объектами какао Objective-C. Соответствие Int (или другому RawRepresentable - соответствующему типу) автоматически дает вам RawRepresentable соответствие (вместо того, чтобы оставлять его чистым Swift enum).

Надеюсь, это поможет. Если это так, дайте мне знать, нужно ли это исправить одному, другому или обоим. Мне любопытно. :-)

1
Joshua Nozzi 21 Окт 2015 в 17:36