2017-03-01 2 views
0

Ich habe ein Realm-Objekt, das ein Array von Objekten enthält.So erstellen Sie unabhängige Realm-Objekte

Nachdem ich das PersonObject initiiert und Daten zu contactArray hinzugefügt habe, versuche ich ein weiteres temporäres Personenobjekt zu erstellen.

PersonObject *tempPersonObj = [[PersonObject alloc]init]; 

und ich zuweisen alten PersonObject zu diesem temporären Objekt;

tempPersonObj = oldPErsonObj; 

Nun, wenn ich die Kontakt Array-Objekte in tempPersonOBj löschen, wird die Kontakt Array-Objekte in oldPersonObj ebenfalls gelöscht.

Warum passiert das? Gibt es eine Möglichkeit, Daten in ein temporäres Objekt zu kopieren, ohne die Datenbank zu beeinträchtigen?

Antwort

1

Wenn Sie tempPersonObj = oldPersonObj zuweisen, erstellen Sie keine Kopie des Objekts für alte Personen. Stattdessen haben Sie jetzt zwei Verweise auf dasselbe zugrunde liegende Personenobjekt. Wenn Sie also eines ändern, wird sich auch das andere ändern. Im Allgemeinen sind alle RLM* Typen, die von Realm bereitgestellt werden, eigentlich nur Verweise auf die zugrunde liegende Datenbank und Objekte.

Wenn Sie ein temporäres Objekt benötigen, sollten Sie (wie Sie es tun) ein neues Objekt erstellen und die Eigenschaften einzeln kopieren. Bei Listen sollten Sie die RLMObject s aus der Listeneigenschaft des ursprünglichen Objekts kopieren und sie zur Listeneigenschaft des neuen Objekts hinzufügen.

+0

Obwohl ich einzelne Elemente kopiert habe, ändert sich das kopierte Objekt, wenn das ursprüngliche Objekt geändert wird! SOmhow alle Realm-Objekte sind verbunden! –