#swift #swiftui
#swift #swiftui
Вопрос:
Я создал пользовательский вид, который отображает содержимое в зависимости от того, является ли переданный аргумент nil
или нет. Проблема, с которой я сталкиваюсь, заключается в том, что представление не обновляется / становится недействительным при изменении optionalData. Дополнительные данные хранятся в моей модели.
struct MyUpdatingView {
var model: Model
var body: some View {
if model.optionalData == nil {
ProgressView()
} else {
OptionalDataView(model.optionalData!)
}
}
}
Модель:
class Model: ObservableObject {
@Published var optionalData: OptionalData
init (){
loadOptionalDataAsync()
}
}
Проблема, с которой я сталкиваюсь, заключается в том, что представление не обновляется при загрузке дополнительных данных в моем основном представлении. Однако интересно то, что я могу добавить Text(model.optionalData.debugDescription)
представление, которое, как представляется, обновляется при загрузке данных.
Есть идеи! Что я могу делать неправильно?
Ответ №1:
По крайней мере, у вас model
должен быть ObservedObject
struct MyUpdatingView {
@ObservedObject var model: Model // << here !!
...
также убедитесь, что вы обновили optionalData
on DispatchQueue.main
после loadOptionalDataAsync
завершения.