PokemonAPIList.swift
Код: Выделить всё
import Foundation
struct PokemonAPIList: Decodable {
var results: [PokemonListEntry]
}
struct PokemonListEntry: Decodable {
var name: String
var url: String
}
Код: Выделить всё
import Foundation
import SwiftUI
import Combine
class PokemonNetworkManager: ObservableObject {
var didChange = PassthroughSubject
()
var pokemonList = PokemonAPIList(results: []) {
didSet {
didChange.send(self)
}
}
init() {
guard let url = URL(string: "https://pokeapi.co/api/v2/pokemon?limit=151") else { return }
URLSession.shared.dataTask(with: url) { (data, _, _) in
guard let data = data else { return }
let pokemonList = try! JSONDecoder().decode(PokemonAPIList.self, from: data)
DispatchQueue.main.async {
self.pokemonList = pokemonList
}
}.resume()
}
}
Код: Выделить всё
import SwiftUI
struct ContentView: View {
@State var networkingManager = PokemonNetworkManager()
var body: some View {
List(networkingManager.pokemonList.results.identified(by: \.url)) {pokemon in //HERE THE ERRORS
Text(pokemon.name)
.font(.largeTitle)
}
}
}
#if DEBUG
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}
#endif
Невозможно определить тип пути к ключу из контекста; рассмотрите возможность явного указания корневого типа
Вставьте ''
Значение типа '[PokemonListEntry]' не имеет 'идентифицированного' элемента
Единственное, что я изменил, — это @BindableObject на @ObservableObject, потому что я читал в Интернете, что он больше не поддерживается.
Подробнее здесь: https://stackoverflow.com/questions/653 ... pplication
Мобильная версия