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