Невозможно преобразовать значение типа «Результат» в ожидаемый тип аргумента «EmailContentData» - PullRequest
0 голосов
/ 07 ноября 2019
enum Result {
case success(r: EmailContentData)
case failure(e: Error)}


static func getMessageList(index : Int, pageCount: Int, completion : @escaping (EmailContentData) -> ())
{
    DispatchQueue.global(qos: .userInteractive).async
        {
            let apiString : String = String(index) + "/" + String(pageCount)
            var objEmailContentData : EmailContentData? = EmailContentData.init(fromDictionary: NSDictionary())

            ApiHelper.sharedSession.post(Constant.API.messagelistApi + apiString, postData: NSDictionary(), methodtype: Constant.API.httpGet) { (isError, data, errorDescription) in
                guard let data = data else { return }
                do {
                    let result = EmailContentData.init(fromDictionary: data.value(forKey:"data") as! NSDictionary)
                    completion(Result.success(r: result))
                } catch let error {
                    completion(Result.failure(e: error))
                }
            }
    }
}

Я получаю сообщение об ошибке «Невозможно преобразовать значение типа« Результат »в ожидаемый тип аргумента« EmailContentData »» и аналогичное для ошибки завершения »Невозможно преобразовать значение типа« Результат »в ожидаемый тип аргумента« EmailContentData »"

Пожалуйста, кто-нибудь подскажет, что я делаю не так? Заранее благодарен: -)

1 Ответ

1 голос
/ 07 ноября 2019

Используйте @escaping (Result) -> () вместо @escaping (EmailContentData) -> ()

static func getMessageList(index : Int, pageCount: Int, completion : @escaping (Result) -> ())
{
    DispatchQueue.global(qos: .userInteractive).async
        {
            let apiString : String = String(index) + "/" + String(pageCount)
            var objEmailContentData : EmailContentData? = EmailContentData.init(fromDictionary: NSDictionary())

            ApiHelper.sharedSession.post(Constant.API.messagelistApi + apiString, postData: NSDictionary(), methodtype: Constant.API.httpGet) { (isError, data, errorDescription) in
                guard let data = data else { return }
                do {
                    let result = EmailContentData.init(fromDictionary: data.value(forKey:"data") as! NSDictionary)
                    completion(Result.success(r: result))
                } catch let error {
                    completion(Result.failure(e: error))
                }
            }
    }
}
...