Установка переменной в Swift с помощью JSON - PullRequest
0 голосов
/ 07 августа 2020

, поэтому я обновил свой код прямо сейчас и переименовал некоторые переменные. Это мой код для запроса 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
}
...