Alamofire Type 'ParameterEncoding' has no member 'URL' Swift 3

匿名 (未验证) 提交于 2019-12-03 01:27:01

问题:

I am trying to migrate my codes from swift 2 version to swift 3 version. I could not migrate following code part and I did not find any solution for it. How can I do it?

// MARK: 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             }         }     } 

回答1:

I'd change the name of this computed property to, say, request, to avoid clashing with the new type name, URLRequest. Coincidentally, this computed property should use a type of URLRequest:

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)     } } 


回答2:

Looks like a lot has changed in Swift 3. Try to change your code by taking reference as below code.

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         }     } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!