Afficher les données enregistrées dans Realm sous forme de liste, Je veux pouvoir afficher, modifier et supprimer chaque cellule.
J'ai pensé, mais à chaque fois que je le supprime L'index 1 est hors limites (doit être inférieur à 1) et s'est écrasé. J'ai fait référence à diverses phrases en anglais pendant longtemps, mais je n'ai pas pu le résoudre.
Je l'ai recherché après un long moment et cet article m'a sauvé. https://llcc.hatenablog.com/entry/2020/04/26/205254
La compréhension d'un nouveau venu comme moi est que pour obtenir une liste, vous allez directement au royaume pour obtenir les données. Cette fois, créez un modèle de vue pour la cellule de la liste, créez un modèle de vue pour la vue entière, Obtenez via ViewModel pour obtenir une liste,
ForEach(model.myModels, id: .id) ↓ ForEach(model.cellModels, id: .id) Plus aucune donnée supprimée ou inexistante
Le contenu est comme ceci:
private var token: NotificationToken?
private var myModelResults = try? Realm().objects(MyModel.self)
@Published var myModels: [MyModel] = []
init() {
token = myModelResults?.observe { [weak self] _ in
self?.myModels = self?.myModelResults?.map { $0 } ?? []
}
}
deinit {
token?.invalidate()
}
ForEach(model.myModels, id: \.id)
Changé en
private var token: NotificationToken?
private var myModelResults = try? Realm().objects(MyModel.self)
@Published var cellModels: [ContentViewCellModel] = []
init() {
token = myModelResults?.observe { [weak self] _ in
self?.cellModels = self?.myModelResults?.map { ContentViewCellModel(id: $0.id, title: $0.title) } ?? []
}
}
deinit {
token?.invalidate()
}
ForEach(model.cellModels, id: \.id)
En faisant cela, l'erreur a été résolue proprement.