2016-05-12 92 views
0

我在新的iOS斯威夫特2無法通過枚舉類型作爲參數類型的函數

我已經定義了一個簡單的函數:

// ERROR: 'Method' is ambiguous for type lookup in this context 
func sendRequest(method: Method, resource: String) -> NSDictionary { 
    Alamofire.request(method, "https://httpbin.org/get") 
} 

正如你看到的,我所定義的第一個參數類型Method,由Alamofire使用。我看着Method,它被定義爲低於Enum

public enum Method: String { 
    case OPTIONS, GET, HEAD, POST, PUT, PATCH, DELETE, TRACE, CONNECT 
} 

爲什麼我不能用枚舉類型作爲參數類型我的功能?

(我爲什麼要做到這一點,我不希望傳遞String類型和檢查,如果字符串是如'get'然後用.GET,所以,我想直接通過Method枚舉值函數的原因。)

==== ====更新

MethodAlamofire庫,我不能改變任何東西。看起來這是一個名稱衝突。但是如何擺脫這個問題呢?

+0

可能是一個名稱衝突與名爲'Method'另一種類型。更改枚舉的名稱或以模塊名稱('Appname.Method')作爲前綴 – dan

+0

我更新了我的帖子。 '方法'來自阿拉莫菲爾圖書館。 –

+0

使用'Alamofire.Method'作爲函數中的類型名稱 – dan

回答

1

編譯器會看到名爲MethodAlamofire.MethodObjectiveC.Method)的多個類型,並且不知道要爲您的函數使用哪一個類型。

您有模塊名稱的前綴類型名告訴它要使用哪一個:

func sendRequest(method: Alamofire.Method, resource: String) -> NSDictionary { 
    Alamofire.request(method, "https://httpbin.org/get") 
} 
+0

是的,沒錯。謝謝。 –

0

Method與同名的運行時類型不明確。我建議選擇不會與現有類型衝突的不同類型名稱。

+0

我更新了我的帖子。 '方法'來自阿拉莫菲爾圖書館,我無法改變任何事情。如何擺脫這個問題? –

相關問題