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

后端 未结 2 1802
误落风尘
误落风尘 2020-12-19 13:40

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?

相关标签:
2条回答
  • 2020-12-19 13:53

    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
            }
        }
    
    0 讨论(0)
  • 2020-12-19 13:57

    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)
        }
    }
    
    0 讨论(0)
提交回复
热议问题