我需要创建一个用于通过iTunes API搜索的应用程序。
但是我不能使用任何库,因此它与我以前使用的库不同。
通过该URL,我应该通过软件“ https://itunes.apple.com/search?entity=software&country=fr&limit=1&term=instagram”获得“ 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?
}
我尝试使用有关此功能的其他主题来解决我的问题,但是我无法解决它。
答案 0 :(得分:0)
请在响应结束时检查是否有空数据计数。
guard let data = data, data.count > 0 else { return }
有时候,数据可以为非零,而数据为空。
答案 1 :(得分:0)
错误出在应用程序模型中,我为整数期望值写了String。
您可以删除该问题。