2016-09-22 19 views
1

私はSwift 3.0に変換中です。のクラスはAlamofireです。次のように私のコードは次のとおりです。Alamofire 4.0 Router文脈の種類が文脈なしであいまいです

enum Router: URLRequestConvertible { 

    case get(query: String, params: [String: AnyObject]?) 
    case post(query: String, params: [String: AnyObject]?) 
    case put(query: String, params: [String: AnyObject]?) 
    case delete(query: String, params: [String: AnyObject]?) 

    var urlRequest: NSMutableURLRequest { 

     // Default to GET 
     var httpMethod: HTTPMethod = .get 

     let (path, parameters): (String, [String: AnyObject]?) = { 
      switch self { 
      case .get(let query, let params): 
       // Set the request call 
       httpMethod = .get 
       // Return the query 
       return (query, params) 
      case .post(let query, let params): 
       // Set the request call 
       httpMethod = .post 
       // Return the query 
       return (query, params) 
      case .put(let query, let params): 
       // Set the request call 
       httpMethod = .put 
       // Return the query 
       return (query, params) 
      case .delete(let query, let params): 
       // Set the request call 
       httpMethod = .delete 
       // Return the query 
       return (query, params) 
      } 
     }() 


     // Create the URL Request 
     let urlRequest: NSMutableURLRequest 
     if let url = URL(string: Globals.BASE_URL + path) { 
      urlRequest = NSMutableURLRequest(url: url) 
     } else { 
      urlRequest = NSMutableURLRequest() 
     } 

     // set header fields 
     if let key = UserDefaults.standard.string(forKey: Globals.NS_KEY_SESSION) { 
      urlRequest.setValue(key, forHTTPHeaderField: "X-XX-API") 
     } 

     // Add user agent 
     if let userAgent = UserDefaults.standard.string(forKey: Globals.NS_KEY_USER_AGENT) { 
      urlRequest.setValue(userAgent, forHTTPHeaderField: "User-Agent") 
     } 

     // Set the HTTP method 
     urlRequest.httpMethod = httpMethod.rawValue 

     // Set timeout interval to 20 seconds 
     urlRequest.timeoutInterval = 20 

     return Alamofire.URLEncoding().encode(urlRequest as! URLRequestConvertible, with: parameters) 
    } 

    func asURLRequest() throws -> URLRequest { 
    } 
} 

これは私Alamofire.URLEncoding()Type of expression is ambiguious without more contextを示すエラーを与えています。これは何を意味するのでしょうか? https://github.com/Alamofire/Alamofire/blob/master/Documentation/Alamofire%204.0%20Migration%20Guide.md#parameter-encoding-protocolAlamofireドキュメント内

が、彼らはコード

public protocol ParameterEncoding { 
    func encode(_ urlRequest: URLRequestConvertible, with parameters: Parameters?) throws -> URLRequest 
} 

答えて

0

を持っているこれは、ほぼHow to migrate Alamofire router class to Swift 3? の複製であることをチェックして、あなたは新しいParameterEncodingを使用する方法を説明しますとURLRequestConvertibleは今、特にことvarではなく、func asURLRequest() throws -> URLRequestで実装されています。

+0

「func」として実装していただきありがとうございます。 –

関連する問題