斯威夫特枚举值都无法访问
问题描述:
我有以下组中定义枚举类:斯威夫特枚举值都无法访问
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
按预期工作。
答
的问题与您enum
是它的名称:雨燕采用.Type
访问类型:
if childMirror.valueType is String.Type {
println("property is of type String")
}
它重命名为别的东西将解决这个问题。
谢谢。这也适用于我。 –