0
Ich versuche Realm (mit Pods installiert). Ich verwende Swift 3 mit Xcode 8.1.Warum bekomme ich einen Wert durch KVC, aber nicht durch die Verwendung von Eigenschaften bei der Verwendung von Realm?
sieht Ihr Code wie this-
do {
let realm = try Realm()
let human = Human()
human.name = "Nikhil"
human.legs = 2
try realm.write {
realm.add(human)
}
let humans = realm.objects(Human.self)
for h in humans {
print("\(h.name)") //Here is breakpoint
}
} catch {
//
}
Und das tue ich dann
(lldb) po h.name
""
(lldb) po h.value(forKey: "name")!
Nikhil
Warum Eigenschaften nicht Werte zurückgegeben werden, aber ich kann durch value(forKey:
Werte abrufen?
LLDB sollte "po" -Eigenschaften direkt auf Realm-Modellen haben können; zumindest funktionierte es für mich mit Xcode 8.2 und Realm installiert mit CocoaPods. Können Sie versuchen, Ihre abgeleiteten Daten zu löschen und Ihren Build-Ordner zu bereinigen (Optionstaste + Produktmenü, dann 'Build-Ordner bereinigen ...')? Möglicherweise gibt es eine Art zwischengespeicherter Daten, die den Debugger nicht ordnungsgemäß funktionieren. – AustinZ
Das liegt wahrscheinlich daran, dass die Eigenschaften des Modells nicht mit 'dynamic' deklariert sind. Ohne das Attribut 'dynamic' wird der Swift-Eigenschaftszugriff statischer Versand sein. Da Realm träge alle Werte lädt, benötigt es dynamisches Dispatching. Bitte beachten Sie unsere Cheatsheets zu den Modelldefinitionen https://realm.io/docs/swift/latest/#cheatsheet –
@kishikawakatsumi Sie hatten Recht. Vielen Dank :) –