Всем привет. Понимаю, вопрос простой, но что то не могу найти нормальной информации в инэте. Начал изучать swiftUI и не могу понять как получить данные JSON вот с такого апи (примерно) { let title: String, let name: String}
Вот мой код, мне выдает ошибку и я не пойму, как правильно и что прописать в контентВью. Пробовал перевести его в массив, но безрезультатно) Помогите пожалуйста))
struct DetailMovies: Decodable, Identifiable {
let id: String
let title: String
let plot: String
}
class DteailViewModel: ObservableObject {
@Published var detailsM: DetailMovies?
private var bag = Set<AnyCancellable>()
let urlString = "https://imdb-api.com/en/API/Title/k_jc60iz95/tt1375666"
init() {
loadDetail()
}
func loadDetail() {
guard let url = URL(string: urlString) else { return }
URLSession.shared.dataTaskPublisher(for: url)
.receive(on: DispatchQueue.main)
.tryMap {res in
guard let response = res.response as? HTTPURLResponse,
response.statusCode >= 200 && response.statusCode <= 300 else {
throw URLError(.badServerResponse)
}
let decoder = JSONDecoder()
guard let det = try? decoder.decode(DetailMovies.self, from: res.data) else {
throw URLError(.badURL)
}
return det
}
.sink { completion in
switch completion {
case .finished:
print("Finished!")
case.failure(let error):
print(error.localizedDescription)
}
//print("Completion: \(completion)")
} receiveValue: { [weak self] returnMovie in
self?.detailsM = returnMovie
}
.store(in: &bag)
}
}
struct ContentView: View {
var detailVM = DteailViewModel()
var body: some View {
List(self.detailVM.detailsM?.title) { detail in //Ошибка вот здесь выходит
Text(detail.title)
}
.onAppear {
detailVM.loadDetail()
}
}
}
Ошибка, которая выскакивает Initializer 'init(_:rowContent:)' requires that 'String?' conform to 'RandomAccessCollection'