, поэтому я обновил свой код прямо сейчас и переименовал некоторые переменные. Это мой код для запроса JSON с помощью Swift. Мой проект называется myTeam. Я пытаюсь получить некоторую JSON информацию, и проблема в том, что я предполагаю, что одна переменная в JSON называется Data. Я пытаюсь получить название «A-League» и получаю две ошибки:
Ошибка 1 со строкой в self.parseJSON(weatherFile: safeFile)
Невозможно преобразовать значение типа Foundation.Data в ожидаемый тип аргумента myTeam.Data '
Ошибка 2 со строкой let decodedFile = try decoder.decode(WeatherFile.self, from: weatherFile)
Невозможно преобразовать значение типа «myTeam.Data» в ожидаемый тип аргумента «Foundation.Data»
import Foundation
struct WeatherManager {
//Link wird definiert
let weatherURL = "https://api.soccersapi.com/v2.2/leagues/?user=submariner5&token=ca2b1a9b51062bbfae3415a0be991578&t=list"
//Funktion macht aus Link + Eingabe einen ganzen Link und führt die Aktion performRequest durch
func fetchWeather (cityName: String) {
let urlString = "\(weatherURL)"
perfromRequest(urlString: urlString)
}
// Funktion führt Request durch
func perfromRequest(urlString: String)
{
//1.Url erstellen
if let url = URL(string: urlString) {
//2. URLSession starten
let session = URLSession(configuration: .default)
//3. Give session a task
let task = session.dataTask(with: url) { (gettingInfo, response, error) in
if error != nil{
print(error!)
return
}
if let safeFile = gettingInfo {
self.parseJSON(weatherFile: safeFile)
}
}
//4. Start the task
task.resume()
}
}
//Das Ergebnis von oben wird hier ausgegeben
func parseJSON(weatherFile: Data) {
let decoder = JSONDecoder()
do{
let decodedFile = try decoder.decode(WeatherFile.self, from: weatherFile)
print(decodedFile.data[0].name)
} catch {
print(error)
}
}
}
И это мой файл структуры.
import Foundation
struct WeatherFile: Decodable{
let data: [Data]
}
struct Data: Decodable {
let name: String
}
Это часть файла Json.
{
"data": [
{
"id": "974",
"name": "A-League",
"is_cup": "0",
"is_amateur": "0",
"continent_id": "6",
"country_id": "14",
"current_season_id": "1082",
"current_round_id": "1022",
"current_stage_id": null
},
Я решил это !!
Мне просто пришлось изменить имя структуры.
import Foundation
struct WeatherFile: Decodable{
let data: [Anything]
}
struct Anything: Decodable {
let name: String
}