Тип аргумента не соответствует декодируемому - PullRequest
0 голосов
/ 13 мая 2019

Не уверен, что делать, где;Я считаю, что мой тип соответствует декодируемому!

let dm = DataManager(networkManagers: [mockHTTPManager])
let ep = Endpoint(scheme: .http, host: "api.nytimes.com",path: "/search/repositories")


dm.object(from: ep, with: DisplayContent.self) {result in
    print (result)
}

, где DisplayContent - это структура

struct DisplayContent:Decodable {
    var title: String?
    var abstract: String?
    var thumbnailImageString: String?
    var date: String?
    var image: String?
}

, и я пытаюсь создать метод для общего преобразования данных в объект, ноЯ думаю, что здесь важна только единственная особенность

func object<T : Decodable>(from endpoint: Endpoint, with object: T, completion: @escaping (Result<T, Error>) -> Void) {
    let error = NSError(domain:"", code:-1009, userInfo:[ NSLocalizedDescriptionKey: "Internet Offline"]) as Error
    let url = endpoint.url!
    networkManagers.first!.get(url: url) { result in
        switch result {
        case .failure: print ("failure")
        case .success(let success) :
            do {
                let decoder = JSONDecoder()
                let content = try decoder.decode(T.self, from: success)
                print ("content")
            } catch {

            }
        }
    }
}

Ошибка «Тип аргумента« DisplayContent.Type »не соответствует ожидаемому типу« Decodable »», но DisplayContent соответствует decodatble!

1 Ответ

1 голос
/ 13 мая 2019

Ваша функция ожидает объект типа T (with object: T), но вы пытаетесь передать тип (DisplayContent.self).

Выможет либо:

  1. передать объект правильного типа (например, DisplayContent()), либо
  2. Сказать функции ожидать, что тип будет передан (например, with object: T.type).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...