Чтобы дать конкретный c ответ на этот вопрос, вам потребуется предоставить дополнительную информацию о базе данных / ViewModel / REST-интерфейсе
Некоторые вещи, которые могут решить вашу проблему с @State var ownRating: Int
до @Binding var ownRating: Int
. State
предназначен для использования только в пределах вида и должен быть объявлен private
, Binding
передаст соединение с ViewModel
Когда onTapGesture
активирован, укажите ваш ViewModel
и используйте предварительно установленный save () / update () REST-интерфейса оттуда.
Возможно, вам придется передать весь объект Movie
или переменную id
в RatingView
, если вы сохраните / Метод обновления нуждается в объекте / идентификаторе для сохранения.
Обновление пользовательского интерфейса при изменении рейтинга зависит от «пинга» или «уведомления» о том, что что-то произошло. SwiftUI и его учебные пособия в значительной степени полагаются на CoreData для этой части.
Я не знаком с Realm, но это то, что я мог бы узнать об этом. Realm
имеет NotificationTokens
, который предоставит необходимое уведомление для обновления SwiftUI в наблюдаемом объекте.
Получение объектов для ListView - Как использовать Realm с SwiftUI
Руководство по началу работы - https://realm.io/docs/swift/latest/
Учебное пособие с кодом запроса UITableView должно быть тем, что вам нужно - https://academy.realm.io/posts/meetup-jp-simard-mastering-realm-notifications/
Устранение неполадок a ListView с observed
объектами области - Индекс за пределами границ при использовании области с SwiftUI
Создание моделей данных области и сохранение - https://learnappmaking.com/realm-database-swift-getting-started/
Вы должны создать ObservableObject со стандартными методами CRUD.
Movie
объект из пользовательского интерфейса -> ViewModel.create(newMovie: Movie)
в Realm -> Уведомить / Сохранить @Published var movies
с новым запросом из Realm
В ViewModel
init()
Получить [Movie]
из Realm
-> Настройка NotifiationToken
до observe
и @Published var movies
с новым запросом из области
Обновлен Mov ie. оценка из пользовательского интерфейса -> ViewModel.update (updatedMov ie) в Realm-> Уведомить / обновить @Published var movies
с новым q Uery из Realm
Удаление работает так же, как и другие.
Существует много разных способов сохранения, и это, безусловно, не самый эффективный способ, поскольку он извлекает весь запрос каждый раз, но он должен помочь вам начать работу. Кажется, NotificationToken поддерживает обновления вплоть до буквы с правильным NotificationToken.observer
.
Специально для вашего кода. Когда у пользователя onTapGesture
новый рейтинг, вы должны ссылаться на viewModel.update(updatedMovie: updatedMovie)
, тогда представление изменится, когда он получит новый список movies
из NotificationToken
.
.