我在下面的课程中定义了枚举:
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
我在这里做错了什么想法?
答案 0 :(得分:6)
问题是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
按预期工作。
答案 1 :(得分:2)
enum
的问题在于它的名称:Swift使用.Type
来访问类型:
if childMirror.valueType is String.Type {
println("property is of type String")
}
将其重命名为其他内容将解决问题。