2015-11-05 14 views
41

我正在使用Alamofire進行網絡處理,並且遇到了一個奇怪的錯誤。好像我們不能通過方法 enum作爲參數。
[錯誤是對方法參數]'方法'在這種情況下對於類型查找是不明確的,Alamofire中的錯誤

enter image description here

private func apiRequest(method: Method, url: String, apiData: [String : AnyObject], completion:(finished: Bool, response: AnyObject?) ->Void) { 

    Alamofire.request(method, url, parameters: apiData).responseJSON{ response in 
     if let JSON = response.result.value { 
      completion(finished: true, response: JSON) 
     } else { 
      completion(finished: false, response:nil) 
     } 
    } 
} 
+1

使用限定名稱,例如'Alamofire.Method'如果有名稱衝突。你已經在爲'request'函數做這件事。 – Sulthan

回答

60

你必須指定從中查找對象類型的模塊。 致電Alamofire.Method

10

可能有名稱衝突。爲了解決這個問題,你可以使用enum的限定名稱(包括模塊名稱):

private func apiRequest(method: Alamofire.Method, ... 
0

雖然這個問題的答案做了修復生成錯誤;在我的情況下,顯示警告的文件在兩個不同的框架中,所以Xcode不知道在哪裏尋找。這不是我們內部框架的預期行爲,所以我只是刪除了我不再需要的副本。

1

您可能在您的應用程序的兩個或多個位置聲明瞭一個類。錯誤是說沒有確定的方法來使用這個類,因爲它聲明的代碼中有幾個不同的地方。

3

我也遇到過這個問題,因爲我已經申報了多項協議的名稱相同的:

protocol SomeProtocol { 
    static func someTypeMethod() 
} 

protocol SomeProtocol { 
    init(someParameter: Int) 
} 

protocol SomeProtocol { 
    var mustBeSettable: Int { get set } 
    var doesNotNeedToBeSettable: Int { get } 
} 
0

類型Method兩種導入模塊聲明。您必須指定使用該類型的模塊。使用Alamofire.Method而不是Method

提示:如果您經常使用的類型,你可以在你的模塊中創建一個類型別名(應用程序):

typealias Method = Almofire.Method 

這樣,你就不會需要Almofire.前綴的類型更多。

相關問題