Ich bin neu in Realm (Swift) und versuche, die beste Architektur zu übernehmen.So filtern Sie Daten nach Bildschirm
Nehmen wir an, ich habe einen Bildschirm 1, wo ich Objekt A, B und C laden, die ich in Realm-Datenbank speichern und anzeigen. Dann gehe ich zu Bildschirm 2, wo ich das gleiche Objekt lade, aber ich lade andere Objekte C, D und E. Wenn ich zurück zu Bildschirm 1 komme, will ich mich nicht mit A, B, C, D und finden E. Ich möchte A, B und C wie vorher finden, also muss ich filtern.
Ich dachte über 2 Strategien: Die erste ist, in Bildschirm 1 ein Array von Uuids meines Objekts und avec ein Ergebnisse, wo ich Objekt, das meine Tabelle von Uuids enthält, zu speichern, aber es funktioniert nicht, weil meine Ein Array von UUIDs ist nicht aktiv, daher werden meine Änderungen nicht dadurch ausgelöst, dass ich UUIDs aus dem UUID-Array hinzufüge oder entferne.
Die zweite Strategie besteht darin, eine vorübergehende Eigenschaft im Modell hinzuzufügen, um zu wissen, wo welche Objekte angezeigt werden sollen. Das Problem besteht darin, dass, wenn beide Bildschirme das Objekt C enthalten, die vorübergehende Eigenschaft auf dem letzten von mir besuchten Bildschirm aktualisiert wird und das Objekt auf dem vorherigen Bildschirm nicht sichtbar ist, da die vorübergehende Eigenschaft geändert wird.
Ich tat das zu einer Zeit, aber das Objekt in einem Standard Swift-Array gehalten ist keine gute Lösung, sagen wir, dass ich ein Objekt, das in beiden Bildschirm 1 und Bildschirm 2 in Bildschirm 2 ist, wenn ich Comeback Um auf 1 zu scrollen, befindet sich das Objekt immer noch in meinem Array und wird freigegeben, so dass es abstürzt, dass das Objekt nicht mehr gültig ist. – Livio
Es ist möglich, den Status eines Objekts zu überprüfen, indem man seine Eigenschaft 'object.invalidated' überprüft. Wenn Sie zu diesem Bildschirm zurückkehren, müssen Sie lediglich überprüfen, ob das Objekt noch gültig ist, und diesen Bildschirm vollständig abbrechen, wenn dies nicht der Fall ist. – TiM
Oh danke ich wusste es nicht! Das ist wirklich großartig. Das bedeutet, dass Sie das Array eventuell mit Filter ({! $ 0.invalidated}) auf dem viewWillAppear von Screen A filtern können, damit es nicht abstürzt, wenn Sie zu diesem Bildschirm zurückkehren! – Livio