Как удалить данные из списка SwiftUI и RealmIOS

Программируем под IOS
Ответить
Anonymous
 Как удалить данные из списка SwiftUI и Realm

Сообщение Anonymous »


Следующий код правильно отображает всех «Пользователей» из базы данных Realm в List SwiftUI. Моя проблема заключается в удалении записей при перелистывании строки.

Когда я прокручиваю строку и нажимаю кнопку удаления, я сразу же получаю ошибку неперехваченное исключение, Список не обновляется, но я знаю, что нужный элемент будет удален из базу данных Realm, поскольку при следующем запуске приложения выбранная запись не отображается.

Вот мой код.
Код SwiftUI
импортировать RealmSwift структура ContentView: Просмотр { @State Private var allUsers: Results = Realm.objects(User.self) var body: some View { VStack{ Текст("Вторая вкладка") Список{ ForEach(allUsers, id:\.self) {пользователь в HStack{ Текст(имя пользователя.) Текст("\(user.age)") } }.onDelete(выполнить: deleteRow) } } } частная функция deleteRow (с indexSet: IndexSet) { indexSet.forEach ({индекс в пытаться! область.write { Realm.delete(self.allUsers[индекс]) } }) } } Модель области импортировать RealmSwift класс Пользователь:Объект{ @objc динамическое имя переменной: String = "" @objc динамическая переменная age:Int = 0 @objc динамическая переменная созданнаяAt = NSDate() @objc динамический var userID = UUID().uuidString переопределить статическую функцию PrimaryKey() -> String? { вернуть «ID пользователя» } } ОШИБКА Приложение закрывается из-за неперехваченного исключения «RLMException», причина: «Индекс 4 выходит за пределы (должен быть меньше 4).»

Конечно, 4 меняется в зависимости от того, сколько элементов находится в базе данных Realm. В этом случае у меня было 5 записей, когда я провел пальцем по экрану и нажал кнопку удаления. .

Я ожидал, что List будет обновляться каждый раз при изменении переменной allUsers @State. Я знаю, что моя проблема заключается в не полном понимании того, как работает привязка.
р>
Что я делаю не так?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»