Как удалить данные из списка SwiftUI и Realm ⇐ IOS
-
Anonymous
Как удалить данные из списка SwiftUI и Realm
Следующий код правильно отображает всех «Пользователей» из базы данных 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. Я знаю, что моя проблема заключается в не полном понимании того, как работает привязка.
р>
Что я делаю не так?
Следующий код правильно отображает всех «Пользователей» из базы данных 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. Я знаю, что моя проблема заключается в не полном понимании того, как работает привязка.
р>
Что я делаю не так?
Мобильная версия