我在下面的类中定义了枚举:
public class MyError: NSError { public enum Type: Int { case ConnectionError case ServerError } init(type: Type) { super.init(domain: "domain", code: type.rawValue, userInfo: [:]) } }
当我尝试在我的测试中稍后检查错误时:
expect(error.code).to(equal(MyError.Type.ConnectionError.rawValue))
我收到编译错误: Type MyError.Type has no member ConnectionError
我在这里做错了什么想法?
问题是,这Type
是一个Swift关键字,您的自定义会Type
混淆编译器.
在我在Playground中的测试中,您的代码生成了相同的错误.解决方案是更改Type
任何其他名称.示例Kind
:
public enum Kind: Int { case ConnectionError case ServerError } init(type: Kind) { super.init(domain: "domain", code: type.rawValue, userInfo: [:]) }
然后
MyError.Kind.ConnectionError.rawValue
按预期工作.