#swiftui #realm #realm-list
Вопрос:
Есть ли способ автоматически обновлять представления, когда они зависят от RealmSwift.Список другого объекта (пожалуйста, смотрите код в конце). Например, при внесении любых изменений в объект «ItemDB» я бы вызвал objectWillChange.send(). После написания в realm мои взгляды будут реагировать на изменения в области. Однако, если я сделаю то же самое с «ItemsDB» (objectWillChange.send() после моей записи в область a), мое представление НЕ будет автоматически отображать изменения. Но если я закрою, а затем снова открою представление, информация будет показана.
class ItemDB: Object {
@objc dynamic var title = ""
let items = List<Items>()
}
class ItemsDB: Object {
@objc dynamic var name = ""
let parentList = LinkingObjects(fromType: Group.self, property: items)
}
class Item: Identifiable {
let title: String
//assume this is initialized
}
class Store: ObservableObject {
var results: Results<Item>
//assume this is all initialized
var item [Item] {
//mapped
}
func newItem() {
objectWillChange.send()
//Followed by a write to realm works perfectly
}
func newItems() {
objectWillChanged.send()
//Followed by a write of ItemsDB to realm does not automatically update SwiftUI view.
}
}
Любое понимание, где будет высоко оценено.
Комментарии:
1. Вопрос (и код) немного расплывчаты. В базе данных ItemDB есть
List<Items>()
объекты, ноItems
объекты не отображаются. Если вы предполагали , что этоItem
так, это не объект области, поэтому он не доступен для изменений (вы можете сделать его объектом NSObject и KVO или другими опциями). Неясно, что или почему используется objectWillChange.send () — Область предоставляет события, когда объекты или коллекции меняются, так почему бы не использовать эту встроенную функциональность?