Hinzufügen eines Nicht-Realm-Objekts als ignorierte Eigenschaft zum Realm-Objekt in swift?

8

Ich versuche, ein Realm-Objekt zu Realm-Objekt hinzuzufügen, so etwas wie dieses.

%Vor%

Während TrainRunningStatus keine Bereichsklasse ist.

%Vor%

Ich kann die runningstatus-Eigenschaft jetzt nicht aktualisieren. Wer weiß wie es funktioniert? Ich rufe separat runnningstatus ab und weise es später dem Realm-Objekt zu, aber es bleibt auch nach der Zuweisung Null.

zB

%Vor%

Diese Zeile funktioniert nicht, die Eigenschaft runningStatus von trainTripItererary ist nicht richtig gesetzt und ist immer nil.

    
kidsid49 08.03.2017, 12:03
quelle

2 Antworten

3

Wie in den Kommentaren empfohlen, vergewissern Sie sich, dass Sie dieselbe Instanz von TrainTripItinerary verwenden, da ignorierte Eigenschaften ihren Wert nicht automatisch für verschiedene Instanzen aktualisieren.

Ein Beispielcode unten zeigt, wie ignorierte Eigenschaften funktionieren

%Vor%     
Dmitry 10.03.2017 14:29
quelle
2

Erstens ist Ihr Code nicht korrekt.

%Vor%

func ignoredProperties() -> [String] wird nur für Realm-Eigenschaften verwendet. Da Ihre Eigenschaft var runningStatus: TrainRunningStatus? nicht mit dynamic beginnt, handelt es sich nicht um eine Realm-Eigenschaft. Sie müssen func ignoredProperties() -> [String] hier nicht verwenden.

var runningStatus: TrainRunningStatus? wird hier als "transiente Eigenschaft" in Realm bezeichnet. Normalerweise ist eine transiente Eigenschaft etwas, das basierend auf dem aktuellen Datum oder auf Realm-Eigenschaften berechnet wird. Realm wird nichts an transienten Eigenschaften ändern und Sie sollten sie selbst verwalten.

Wenn Sie also runningStatus als vorübergehende Eigenschaft verwenden möchten, können Sie einfach den Code override static func ignoredProperties() -> [String] entfernen.

    
Owen Zhao 12.03.2017 09:05
quelle

Tags und Links