Search code examples
iosswift3promisepromisekit

Cannot convert return expression of type Promise (_,_) -> DataRequest to return type Promise<DataResponse,AnyObject>>


Cannot convert return expression of type Promise (,) -> DataRequest to return type Promise>

my function is

func postJson(_ url: String, parameters: [String: String]) -> Promise<DataResponse<AnyObject>> {

        var request = URLRequest(url: URL(string: url)!)
        request.httpMethod = "POST"
        request.setValue("application/json", forHTTPHeaderField: "Content-Type")

        request.httpBody = try! JSONSerialization.data(withJSONObject: parameters)

        return Promise { fulfill, reject in

        manager.request(request)
            .responseJSON { response in
                fulfill(response)
        }

And I get this error on the return Promise line. How do I convert ?

I tried changing my return signature to Promise<DataRequest, Error and get a compile error on that line that Promise is too specialized with 2 parameters instead of 1.


Solution

  • Problem is with fulfill because it's expecting parameter DataResponse<AnyObject> but you are passing DataResponse<Any>.

    Changing return type of your postJson method to Promise<DataResponse<Any>> should solve your problem.

    Change this line

    func postJson(_ url: String, parameters: [String: String]) -> Promise<DataResponse<AnyObject>> {
    

    to

    func postJson(_ url: String, parameters: [String: String]) -> Promise<DataResponse<Any>> {