2017-02-18 35 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