2017-02-18 36 views
0

升級Alamofire斯威夫特3語法我不知道什麼是基於URLRequestConvertible,(代碼段目前不符合)升級路由器的最安全的方式。我已經嘗試了一些東西,但我的感覺是URL編碼可能會有所改變。升級路由器代碼Alamofire 4.0和斯威夫特3

雖然Alamofire似乎已經改變了廣泛的錯誤,我可以直接看到的是,「不用彷徨」觸發編譯器錯誤,一樣ParameterCoding.URL即不再有效。

碼型我有(可能在我的代碼至少30米不同的地方)是:

// MARK: - AlamoFire Router 
enum Router: URLRequestConvertible 
{ 
    static let baseURL = Singleton.sharedInstance.apiURL 
    static let apiKey: String = Singleton.sharedInstance.apiKey 
    static let applicationId: String = Singleton.sharedInstance.applicationId 

    case userPoints() 

    var method: Alamofire.Method 
    { 
     switch self 
     { 
      case .userPoints: 

       return .GET 
     } 
    } 


    var path: String 
    { 
     switch self 
     { 
      case .userPoints: 

       return "https://stackoverflow.com/users/points/user/\(Singleton.sharedInstance.user.id)" 
     } 
    } 

    var URLRequest: NSMutableURLRequest 
    { 
     let URL_val = URL(string: Router.baseURL)! 

     let mutableURLRequest = NSMutableURLRequest(URL: URL_val.URLByAppendingPathComponent(path)) 
     mutableURLRequest.HTTPMethod = method.rawValue 

     // Send API key and Application ID in the header 
     mutableURLRequest.setValue("API-Key apiKey=\(Router.apiKey) applicationId=\(Router.applicationId)", forHTTPHeaderField: "X-Authorization") 

     let encoding = ParameterEncoding.URL 

     #if DEBUG 
      print(mutableURLRequest) 
     #endif 

     switch self 
     { 
      case .userPoints: 

       return encoding.encode(mutableURLRequest, parameters: nil).0 
     } 
    } 
} 

非常希望有人在Alamofire和斯威夫特3洞察力可以幫助我找出一個解決方案,以符合變化。

非常感謝提前!

回答

1

我熟悉的設置。 .Get需要改成.get一件事。

let URL_val = Router.baseURL.asURL()

var urlRequest = URLRequest(url: URL_val.appendingPathComponent(path))

移動switch語句外的回報,後移動。

變化var urlRequestfunc asURLRequest() throws -> URLRequest

switch self { 
case .userPoints: 
    urlRequest = try URLEncoding.default.encode(urlRequest, with: nil) 
} 

return urlRequest 

他們有他們的文檔的完整工作示例下CRUD &授權

+0

謝謝你的回答!您是否可以編輯代碼以包含您的更改?至於的.url,其實我已經嘗試過,但編譯器給你一個「類型‘方法’(又名OpaquePointer)沒有成員‘得到’」 – nights

+1

改變方法'VAR方法:HTTPMethod'別的,你應該能夠找到輕鬆地在「路由請求」部分的alamofire文檔中。如果這不能解決所有問題,那麼你應該非常接近,因爲我沒有注意到你提供的代碼應該是一個問題。 – JustinM

+0

好的。謝謝。這個怎麼行:mutableURLRequest.setValue( 「API密鑰apiKey = \(Router.apiKey)的applicationID = \(Router.applicationId)」,forHTTPHeaderField: 「X-授權」)是新Alamofire幕後所有這happning流? – nights