2017-03-01 18 views
3

swift 2からswift 3にマイグレーションしようとしています。 次のコード部分を移行することができず、そのための解決策が見つかりませんでした。 どうすればいいですか?Alamofire Type 'ParameterEncoding'にはメンバー 'URL'がありませんSwift 3

// MARK:多くのコード以下のような基準を取ることによって、あなたのコードを変更してみスウィフト3に変更されているようURLRequestConvertible

 public var URLRequest: NSMutableURLRequest { 
      let urlComponent = NSURLComponents(string: Router.baseURL)! 
      urlComponent.path = Router.basePath.stringByAppendingString(path) 

      let mutableURLRequest = NSMutableURLRequest(URL: urlComponent.URL!) 
      mutableURLRequest.HTTPMethod = method.rawValue 

      var parameters: [String: AnyObject] = Dictionary() 
      parameters["key"] = Router.key 
      parameters["hl"] = "en" 

      switch self { 
      case .getMostPopularVideos(let pageToken): 
       parameters["part"] = "snippet,contentDetails,statistics" 
       parameters["chart"] = "mostPopular" 
       parameters["videoCategoryId"] = TubeTrends.Settings.topTrendsCat 
       if let pageToken = pageToken { 
         parameters["pageToken"] = pageToken 
       } 
       return Alamofire.ParameterEncoding.URL.encode(mutableURLRequest, parameters: parameters).0 //This part Giving Error like Alamofire Type 'ParameterEncoding' has no member 'URL' 

//   default: 
//    return mutableURLRequest 
      } 
     } 
    } 
+0

:偶然にも、この計算されたプロパティはURLRequestのタイプを使用する必要がありますか? – Rob

+0

はいあなたは正しいです – Jessica

答えて

1

私は、新しいタイプ名、URLRequestとの衝突を避けるために、request、たとえば、この計算されたプロパティの名前を変更すると思います。私はあなただけスウィフト3に更新するだけでなく、Alamofireの最新バージョンを使用していないと仮定し

public var request: URLRequest { 
    let url = URL(string: Router.baseURL)! 
     .appendingPathComponent(Router.basePath) 
     .appendingPathComponent(path) 

    var request = URLRequest(url: url) 
    request.httpMethod = method.rawValue 

    var parameters = [String: Any]() 
    parameters["key"] = Router.key 
    parameters["hl"] = "en" 

    switch self { 
    case .getMostPopularVideos(let pageToken): 
     parameters["part"] = "snippet,contentDetails,statistics" 
     parameters["chart"] = "mostPopular" 
     parameters["videoCategoryId"] = TubeTrends.Settings.topTrendsCat 
     if let pageToken = pageToken { 
      parameters["pageToken"] = pageToken 
     } 
     return try! Alamofire.URLEncoding.default.encode(request, with: parameters) 
    } 
} 
+0

あなたの助けてくれてありがとうRob。しかし、それはvar request = URLRequest(url:url)のように与え、エラーを返します。非関数型 'URLRequest'の値を呼び出せません。 – Jessica

+0

この変数の名前を変更しましたか?同じ名前の変数を持つ場合は、URLRequest型で混乱させることができます。 – Rob

+0

はい私は試みたが動作していない問題はURLRequest(url:url)によって引き起こされたと私は思う。 – Jessica

5

が見えます。

func asURLRequest() throws -> URLRequest { 
     let url = URL(string: Router.baseURLString)! 
     var urlRequest = URLRequest(url: url.appendingPathComponent(path)) 
     urlRequest.httpMethod = method.rawValue 

     if let token = Router.OAuthToken { 
      urlRequest.setValue("Bearer \(token)", forHTTPHeaderField: "Authorization") 
     } 

     switch self { 
     case .createUser(let parameters): 
      return try Alamofire.JSONEncoding.default.encode(urlRequest, with: parameters) 
     case .updateUser(_, let parameters): 
      return try Alamofire.URLEncoding.default.encode(urlRequest, with: parameters) 
     default: 
      return urlRequest 
     } 
    } 
関連する問題