2016-07-01 10 views
2

Ich refaktoriere meine App mit der großen Realm-Bibliothek und ersetze CoreData. Ein Problem, mit dem ich konfrontiert bin, ist das Fehlen von Kaskadenlöschungen und das Fehlen eines guten Vorschlags, wie man diesen wichtigen Schritt auf andere Weise macht.Realm Best Practice, um kaskadenartiges Löschen zu erreichen

Mein Modell als

beschrieben werden
Person - idx, <RLMarray Dogs> 
Dog - idx, <RLMarray Walks> 
Walk - distance, time 

Was ist die beste Praxis, wenn Person zu löschen und alle seine Releted Hunde und dog.walks?

Iteration über alle? Oder gibt es eine andere Methode, um die Referenz der Kinderobjekte zu erhalten?

Antwort

3

Jetzt müssen Sie alle verwandten Objekte und die damit verbundenen Objekte usw. selbst durchlaufen, während Sie Zyklen vermeiden und nur Objekte über Relationen löschen, für die Löschoperationen kaskadiert werden sollen.

Dies könnte in Abhängigkeit von dem Objektmodell erreicht werden, indem eine rekursive Methode für jedes involvierte Objekt implementiert wird, z. cascadeDelete, die die Methode für verwandte Objekte aufruft. Das Löschen des Objekts selbst muss immer der letzte Schritt sein, da sonst das Objekt ungültig wird und seine Beziehungen nicht mehr zugänglich sind.

Abgesehen davon könnte es hilfreich sein zu wissen, dass es eine Methode ist -\[RLMRealm deleteObjects:\], die Sie NSFastEnumeration -implementing Sammlungen löschen können, was RLMArray und RLMResults enthält.

Verwandte Themen