2015-12-02 63 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") 
} 

它重命名爲別的東西將解決這個問題。