Без сети приложение падает
Что не так. Ответ сервера разбирается через try!. Любая ошибка — нет сети, таймаут, неожиданный JSON — превращается в падение приложения.
func load() {
api.fetchNotes { result in
self.notes = try! result.get()
}
}Как исправить. Перейдите на async/await и показывайте ошибку с кнопкой «Повторить»:
@MainActor
final class NotesViewModel: ObservableObject {
@Published private(set) var notes: [Note] = []
@Published var error: Error?
private let api: NotesAPI
init(api: NotesAPI = LiveNotesAPI()) { self.api = api }
func load() async {
do {
notes = try await api.notes()
error = nil
} catch {
self.error = error
}
}
}В экране загрузка запускается через .task { await model.load() } — задача отменится сама, когда экран закроют.