1

我已经声明了错误类型

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 错误处理文档

4

2 回答 2

2

我终于弄明白了。我在 Swift 之前的时代就在 Objective-c 共享类中声明了 enum ErrorType 。

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

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

于 2015-10-26T08:53:22.760 回答
1

您是否有机会使用UserServicesErrorCocoa 类?如果是这样,Using Swift with Cocoa and Objective-C 指南的错误小节建议它应该这样声明:

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

@objc任何与 Objective-C Cocoa 对象交互的协议都需要该名称。符合Int(或其他符合标准的RawRepresentable类型)会RawRepresentable自动使您符合要求(而不是将其保留为纯 Swift enum)。

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

于 2015-10-21T17:36:55.950 回答