2016-03-22 22 views
0

Ich erstelle Realm-Eintrag mit diesem Code und es funktioniert gut.Wie bekomme ich den Wert eines gerade erstellten Realm-Eintrags?

 let new = Exercises() 
     new.name = new_name 
     new.notes = new_notes 

     try! RealmDB.write({() -> Void in 
      self.selectedDate.exercises.append(new) 
     }) 

, sobald der Eintrag in Bereich Datenbank erstellt wird muss ich mehrere UITextFields mit Werten dieses Eintrags aktualisieren.

NameField.text = String(XXXXX.name) 
NotesField.text = String(XXXXX.notes) 

ich kann einfach nicht das richtige Stück Code für das XXXXX finden. Bitte lassen Sie mich wissen, wenn Sie ein paar Ideen haben.

vereinfachte Realm-Struktur sieht so aus.

Dates { 
     date { 
      type = date; 
      objectClassName = (null); 
      indexed = NO; 
      isPrimary = NO; 
      optional = NO; 
     } 
     exercises { 
      type = array; 
      objectClassName = Exercises; 
      indexed = NO; 
      isPrimary = NO; 
      optional = NO; 
     } 
    } 
    Exercises { 
     date { 
      type = date; 
      objectClassName = (null); 
      indexed = NO; 
      isPrimary = NO; 
      optional = NO; 
     } 
     name { 
      type = string; 
      objectClassName = (null); 
      indexed = NO; 
      isPrimary = NO; 
      optional = NO; 
     } 
     notes { 
      type = string; 
      objectClassName = (null); 
      indexed = NO; 
      isPrimary = NO; 
      optional = NO; 
     } 
    } 

Antwort

2

Wenn Ihr self.selectedDate Objekt im gleichen Umfang wie Ihr UITextField objets ist, sollte es nur eine Frage der folgenden sein:

let latestNote? = self.selectedDate.exercises.last 
NameField.text = latestNote.name 
NotesField.text = latestNote.notes 

Wenn das nicht der Fall ist, dann ist das einfachste Vorgehen wäre, eine Abfrage mit Realm durchzuführen, um die soeben gespeicherten Daten erneut abzurufen.

Wenn Sie keine Möglichkeit haben, Dates Einträge in Ihrer Datenbank richtig zu unterscheiden, könnte es sich lohnen, ein Primärschlüsselfeld hinzuzufügen.

class Dates : Object { 
    dynamic var uuid = NSUUID.UUIDString 

    override static func primaryKey() -> String? { 
     return "uuid" 
    } 
} 

Auf diese Weise können Sie den Primärschlüsselwert des Objekts hängen auf den Sie anzeigen möchten, und einfach Realm Abfrage für sie dies wie:

let realm = try! Realm() 
let dates? = realm.objectForPrimaryKey(Dates.self, key: "<UUID>") 

Lassen Sie mich wissen, wenn Sie Klärung bedürfen /nachverfolgen!

+0

vielen dank !! du hast meinen Tag gerettet! self.selectedDate.exercises.last hat die Aufgabe für mich erledigt. – alexey

+0

Oh! Genial! Gern geschehen! Alles Gute! :) – TiM

Verwandte Themen