簡體   English   中英

Alamofire和PromiseKit與Swift的空洞錯誤(請求)

[英]Error on Void with Alamofire and PromiseKit with Swift (Request)

在我的上一個項目中,我一直在使用alamofire和promisekit連接到我的Web服務現在我有兩個新版本,當我創建請求時,我收到此錯誤

Cannot convert value of type 'DataRequest' to closure result type 'Void'

當我嘗試這樣做時會發生這種情況:

func CallOne() -> Promise<[String: AnyObject]>{
        return Promise{
            fullfil,reject -> Void in
            return Alamofire.request(
                url_api,
                method: .get).responseJSON{
                    response in
                    switch(response.result){
                    case .success(let res):
                        let data = res as? [String: AnyObject]
                        fullfil(data!)
                    case .failure(let error):
                        reject(error)
                    }
            }
        }
    }

當我嘗試使用它時:

func CallTwo(email: String, phone: String) -> Promise<[String: AnyObject]>{
    let params =
        ["email": email, "phone": phone]
    return Promise{
        fullfil,reject -> Void in
        return Alamofire.upload(
            multipartFormData: { MultipartFormData in
                for (key, value) in params {
                    MultipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
                }
        }, to: url_api, method: .post) { (result) in
            switch (result){
            case .success(let upload, _, _):
                upload.responseJSON { response in
                    switch(response.result){
                    case .success(let res):
                        let data = res as? [String: AnyObject]
                        fullfil(data!)
                    case .failure(let error):
                        reject(error)
                    }
                }
            case .failure(let encodingError):
                print(encodingError)
            }
        }
    }
}

我收到此錯誤Unable to infer closure type in the current context

我怎么解決這個問題? 提前致謝

我用它來解決這個問題

密封

func CallOne() -> Promise<[String: AnyObject]>{
    return Promise{
        seal in
        return Alamofire.request(
            url_api,
            method: .get).responseJSON{
                response in
                switch(response.result){
                case .success(let res):
                    let data = res as? [String: AnyObject]
                    seal.fulfill(data!)
                case .failure(let error):
                    seal.reject(error)
                }
        }
    }
}

func CallTwo(email: String, phone: String) -> Promise<[String: AnyObject]>{
    let params =
        ["email": email, "phone": phone]
    return Promise{
        seal in
        return Alamofire.upload(
            multipartFormData: { MultipartFormData in
                for (key, value) in params {
                    MultipartFormData.append(value.data(using: String.Encoding.utf8)!, withName: key)
                }
        }, to: url_api, method: .post) { (result) in
            switch (result){
            case .success(let upload, _, _):
                upload.responseJSON { response in
                    switch(response.result){
                    case .success(let res):
                        let data = res as? [String: AnyObject]
                        seal.fulfill(data!)
                    case .failure(let error):
                        seal.reject(error)
                    }
                }
            case .failure(let encodingError):
                print(encodingError)
            }
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM