Swift 2.1 ErrorType不符合协议RawRepresentable

时间:2015-10-21 09:40:52

标签: ios swift swift2 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

2 个答案:

答案 0 :(得分:2)

我终于明白了。我已经在pre-swift年代的objective-c共享类中声明了枚举ErrorType。

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

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

答案 1 :(得分:1)

你是否有机会使用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)。

我希望这会有所帮助。如果确实如此,请告诉我是否需要修复它。我很好奇。 : - )