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'
有什么想法吗?官方文档说这个声明就足够了。
您是否有机会将 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'
我已声明错误类型
enum UserServicesError: ErrorType {
case UserNotLogged
}
但是我得到一个错误
Argument type 'UserServicesError' does not conform to expected type 'ErrorType'
Type 'UserServicesError' does not conform to protocol 'RawRepresentable'
有什么想法吗?官方文档说这个声明就足够了。
您是否有机会将 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'