Невозможно преобразовать значение типа '()' в ожидаемый тип аргумента 'Данные' - PullRequest
0 голосов
/ 01 марта 2020

Вот моя проблема:

A Json объект возвращается функцией fetch (), и я хотел бы проанализировать его со структурами, более того, 'let welcome' не принимает мои json объект:

сообщение об ошибке: Невозможно преобразовать значение типа '()' в ожидаемый тип аргумента 'Данные'

Возможно, что-то не так с JSON функцией декодера?

import Foundation
import Alamofire

func fetch() {
AF.request("https://shopping.yahooapis.jp/ShoppingWebService/V1/json/itemSearch?appid=XXXXXX&store_id=ejapan&jan=4901330197711").responseJSON { response in
        debugPrint(response.value!)
        return
    }
}

let jsonData = fetch()

let welcome = try? newJSONDecoder().decode(Welcome.self, from: jsonData)



struct Welcome: Codable {
    var resultSet: ResultSet

    enum CodingKeys: String, CodingKey {
        case resultSet = "ResultSet"
    }
}

1 Ответ

1 голос
/ 01 марта 2020

Функция fetch() не возвращает никакого значения, поэтому jsonData это просто Void aka ().

Вам необходимо декодировать ответ внутри обработчика AF.request:

AF.request("https://sh....").responseJSON { response in
        debugPrint(response.value!)
        let welcome = try? newJSONDecoder().decode(Welcome.self, from: response.data!)
    }
}

Обратите внимание, что вы также можете использовать responseDecodable напрямую:

AF.request("https://....").responseDecodable(of: Welcome.self) { response in
    debugPrint("Response: \(response)")
}
...