2015-12-02 36 views
4

我有以下组中定义枚举类:斯威夫特枚举值都无法访问

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

任何想法我在做什么错在这里?

回答

5

问题是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 

按预期工作。

+0

谢谢。这也适用于我。 –

2

的问题与您enum是它的名称:雨燕采用.Type访问类型:

if childMirror.valueType is String.Type { 
    println("property is of type String") 
} 

它重命名为别的东西将解决这个问题。