2016-02-23 2 views
7

ich auf eine seltsame Sache stolperte, wenn sie versuchen, ein Objekt aus meinem Reich (iOS, Swift, Realm Version 0.98.2)Realm Objekteigenschaft verfehlt seinen Wert, aber ich kann es sehen, wenn das Drucken des gesamten Objekts

print("speaker:") 
print(RealmProvider.appRealm.objects(FavoriteSpeaker).first!) 
zu holen

Dumps korrekt mein Objekt in der Konsole:

speaker: 
FavoriteSpeaker { 
    name = Ashley Nelson-Hornstein; 
} 

Aber wenn ich versuche, die name Eigenschaft Wert zu erhalten:

print("speaker name:") 
print(RealmProvider.appRealm.objects(FavoriteSpeaker).first!.name) 

Ich erhalte eine leere Zeichenfolge

speaker name: 

Die vier Linien sind zusammen in meinem Modell init Methode


Update 1: Ich fand eine Antwort, dass Sie nur nicht sehen, schlägt die Werte, wenn in der Konsole gedruckt: Realm object is missing all properties except primaryKey, aber ich habe auch versucht, die name Eigenschaft über eine Warnmeldung anzuzeigen, und das ist auch leer.


Update 2: Nur um sicher zu machen, dass alles dies tat ich der Reihe nach und auf dem gleichen Thread passiert:

ist
let favorite1 = FavoriteSpeaker() 
favorite1.name = "Debbie Downer" 

try! RealmProvider.appRealm.write { 
    RealmProvider.appRealm.deleteAll() 
    RealmProvider.appRealm.add(favorite1) 
} 

print("speaker:") 
print(RealmProvider.appRealm.objects(FavoriteSpeaker.self).first!) 

print("speaker name:") 
print(RealmProvider.appRealm.objects(FavoriteSpeaker.self).first!.name) 

Aber das Ergebnis das gleiche - Druck name druckt eine leere Zeichenfolge

Antwort

21

Die name Eigenschaft ist wahrscheinlich nicht als dynamic deklariert, was dazu führt, dass der nil Wert, der auf dem Objekt gespeichert ist, eher tha ist n Lesen der Daten aus dem Realm.

+0

In der Tat war das das Problem, danke! Das bringt mich zum Nachdenken - es muss einen Weg für Realm geben, dies beim Start zu überprüfen, Swift hat eine Art introspektionistische Fähigkeiten ... –

+0

Wir haben versucht, einen Weg zu finden, nach nicht-dynamischen Eigenschaften zu suchen, aber es scheint nicht möglich zu sein, da es nicht direkt verfügbar ist und Mirror die Dinge nicht auf dieselbe Weise liest wie die Eigenschaft. –

+0

das ist schade, weil dieses Problem garantiert immer wieder erscheinen wird. Alle meine Objekte hatten ihre Eigenschaften dynamisch, aber dieses bestimmte Objekt, weil ich mich entschieden habe, es zuletzt und in Eile hinzuzufügen und es als dynamisch zu markieren ... –

Verwandte Themen