2016-04-14 8 views
1

Nehmen wir an, ich habe ein eigenständiges Objekt namens standAloneObject, das aus dem ursprünglichen Objekt (namens originalObject) mithilfe der Methode initWithValue erstellt wurde. Wenn ich originalObject aus dem Realm lösche, macht es standAloneObject ungültig? Wenn nicht, kann ich das Objekt mithilfe createOrUpdateInRealm erneut hinzufügen: withValues:?Wie wird ein eigenständiges Objekt betroffen, wenn das tatsächliche Objekt aus dem Bereich gelöscht wird?

Wenn es von Bedeutung ist, wird dies alles auf dem Hauptthread getan.

EDIT:

MyRLMObject *standAloneObject = [[MyRLMObject alloc] initWithValue:persistedObject]; 
RLMRealm *defaultRealm = [RLMRealm defaultRealm]; 
[defaultRealm beginWriteTransaction]; 
[defaultRealm deleteObject: persistedObject]; 
[defaultRealm commitWriteTransaction]; 

[defaultRealm beginWriteTransaction]; 
[defaultRealm addOrUpdateObject:standAloneObject]; 
[defaultRealm commitWriteTransaction]; 

Dies ist eine sehr vereinfachte Version von dem, was ich zu tun versucht, aber es fängt effektiv die Essenz das, was ich zu tun versuchen.

+0

wieder hinzufügen. Es gibt einige Kompilierungsfehler in Ihrem Code, also habe ich behoben. Wenn der obige Code korrekt ist, kann ich keinen Fehler reproduzieren. Wenn Sie immer noch den Fehler haben, senden Sie bitte Ihr reproduzierbares Projekt an [email protected] für eine Untersuchung. –

Antwort

0

Wenn ich originalObject aus dem Realm lösche, macht es standAloneObject ungültig?

Nein. Das eigenständige Objekt, das von initWithValue: erstellt wurde, ist von Realm isoliert. Es ist nur ein Objekt. (So ​​eigenständiges Objekt über Threads übergeben.)

Wenn nicht, kann ich das Objekt erneut hinzufügen von createOrUpdateInRealm mit: withValues ​​:?

Ja. Sie können das eigenständige Objekt mit createOrUpdateInRealm:withValues:

+0

Das ist genau das, was ich dachte, aber ich bekomme eine Ausnahme vom Realm, wenn ich das versuche. Die Ausnahme ist "RLMException - Das Hinzufügen eines gelöschten oder ungültigen Objekts zu einem Realm ist nicht zulässig" Was kann ich an meinem Ende tun, um herauszufinden, was dieses Problem verursacht? Ich bemerkte auch im Debugger, als ich OriginalObject löschte, konnte ich keine Beschreibung mehr das StandAloneObject drucken. –

+0

@JasperChan Können Sie Ihren Code teilen, indem Sie Ihre Frage aktualisieren? –

+0

Fertig wie gewünscht. Danke für Ihre Hilfe! :) –

Verwandte Themen