Swift 2.1 ErrorType不符合协议RawRepresentable

Swift 2.1 ErrorType does not conform protocol RawRepresentable

我已声明错误类型

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 Error handling documentation

您是否有机会将 UserServicesError 与 Cocoa 类 一起使用?如果是这样,Using Swift with Cocoa and Objective-C guide 的错误部分建议它应该这样声明:

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

任何与 Objective-C Cocoa 对象交互的协议都需要 @objc 指定。符合 Int(或其他一些符合 RawRepresentable 的类型)会自动让你符合 RawRepresentable(相对于让它成为纯粹的 Swift enum)。

希望对您有所帮助。如果是这样,请告诉我是一个、另一个还是两者都需要修复它。我很好奇。 :-)

我终于弄明白了。我在 objective-c shared class 中声明了 enum ErrorType from pre-swift ages.

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

我希望看到 Redefined type error 而不是 does not conform to protocol 'RawRepresentable'