Я новичок в быстром и в настоящее время изучаю API, выполняя проект, который показывает список игр из rawg.io со ссылкой на do c. Я создал GameFeed.swift
и GameDetail.swift
, чтобы извлечь из него имя, дату выпуска и рейтинг, и отлично работает на моей консоли.
GameFeed.swift:
struct GameFeed: Codable {
let results:[GameDetail]
}
GameDetail.swift:
struct GameDetail: Codable {
let name:String
let released:String
let rating:Double
}
Now i'm trying to put the results to a simple UIlabel
like gameName.text
, gameReleased.text
& gameRating.text
from ViewController.swift
so it will be show in Main.Storyboard
введите описание изображения здесь
Я исследовал в Google, как показать его этим UIlabel
с помощью DispatchQueue.main.async
, но когда я объявляю его, он получает ошибку:
Значение типа GameFeed не имеет элемента name
такие же сообщения об ошибках также произошли с released
и rating
. Это мой ViewController.Swift
:
class ViewController: UIViewController {
@IBOutlet weak var gameName: UILabel!
@IBOutlet weak var gameReleased: UILabel!
@IBOutlet weak var gameRating: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Defining API Site
let urlString = "https://api.rawg.io/api/games"
let url = URL(string: urlString)
guard url != nil else {
return
}
// Calling API
let session = URLSession.shared
let dataTask = session.dataTask(with: url!){
(data, response, error) in
if error == nil && data != nil {
let decoder = JSONDecoder()
do {
let gameFeed = try decoder.decode(GameFeed.self, from: data!)
print(gameFeed)
DispatchQueue.main.async {
self.gameName.text = gameFeed.name
self.gameReleased.text = gameFeed.released
self.gameRating.text = gameFeed.rating
}
}
catch {
print("Error Parsing JSON")
}
}
}
dataTask.resume()
}
}
Что мне делать, чтобы можно было разобрать данные на метки?