Как разобрать iTunes API в Swift 4? - PullRequest
0 голосов
/ 10 апреля 2019

Мне нужно сделать приложение, используемое для поиска через iTunes API.

Но я не могу использовать какую-либо библиотеку, поэтому она отличается от той, к которой я привык.

С этим URL я должен получить первый результат поиска в Instagram через программное обеспечение: "https://itunes.apple.com/search?entity=software&country=fr&limit=1&term=instagram"

Я пытаюсь получить результаты с помощью этой части кода:

let url = URL(string: "https://itunes.apple.com/search?entity=software&country=fr&limit=1&term=instagram")!

URLSession.shared.dataTask(with: url) { (data, response, error) in
    guard let data = data else { return }
    do {
        let decodedResponse = try JSONDecoder().decode(iTunesResponse.self, from: data)
    } catch let error {
        print("Failed to load: \(error.localizedDescription)")
    }
}.resume()

но это не работает и всегда ловит ошибку.

Вот JSON, который я могу получить:

{
    "resultCount": 1,
    "results": [{
        "screenshotUrls": ["https://is2-ssl.mzstatic.com/image/thumb/Purple123/v4/e9/d2/bf/e9d2bf85-7c32-0ac3-cc1f-e7160abbb8d6/source/392x696bb.jpg"],
        ...
        "userRatingCount": 1697595
    }]
}

И модели, которые я использую:

struct iTunesResponse: Decodable {
    let resultCount: Int?
    let results: [App]?
}

struct App: Decodable {
 let isGameCenterEnabled: Bool?
 let screenshotUrls: [String]?
 ...
 let userRatingCount: Int?
}

Я пытался решить свою проблему с помощью других тем об этой функции, но не могу ее исправить.

Ответы [ 2 ]

0 голосов
/ 17 апреля 2019

Ошибка была в модели приложения, я написал String для целого ожидаемого значения.

Вы можете удалить этот вопрос.

0 голосов
/ 10 апреля 2019

Пожалуйста, проверьте количество пустых данных также при закрытии ответа.

guard let data = data, data.count > 0 else { return }

Иногда данные могут быть ненулевыми с пустыми данными.

...