2016-07-02 14 views
1

ich ein Modell in Realm erstellt haben, wie folgt:erzeugten Wert zu einem RealmObject hinzufügen


open class Contact() : RealmObject() { 

    @PrimaryKey 
    @Required 
    open var id: String = "" 

    @Required 
    @Index 
    open var firstName: String = "" 
    @Required 
    @Index 
    open var lastName: String = "" 
    @Required 
    @Index 
    open var fullName: String = "" 

    ... 
} 

Wie würde man die fullName erzeugen, wenn ein Objekt zu aktualisieren?

Ich weiß zum Beispiel in CoreData können Sie eine Eigenschaft mutieren, wenn willSave:_ aufgerufen wird. Wie würde das für Realm funktionieren?

Ich habe versucht, einen Getter bereitzustellen, aber das wird RealmObject das Verhalten brechen.

Danke!

+0

Wenn fullname die Verkettung von Vornamen und Nachnamen ist, speichern, warum es in erster Linie, anstatt nur aus den beiden anderen Bereichen Computing? Wenn nicht, warum genau wollen Sie dann erreichen? –

+0

fullName wird nicht immer als Verkettung verwendet. Es ist eine Möglichkeit, über den ganzen Namen zu suchen, zum Beispiel in einem Feld "Alle suchen". Im Rest der Implementierung wird firstName und lastName immer separat verwendet. –

Antwort

0

können Sie verwenden custom setters in RealmObjects

@Required 
@Index 
open var firstName: String = "" 
    set(value) { 
     field = value 
     updateFullName() 
    } 

@Required 
@Index 
open var lastName: String = "" 
    set(value) { 
     field = value 
     updateFullName() 
    } 

private fun updateFullName() { 
    fullName = "$firstName $lastName" 
} 

@Required 
@Index 
open var fullName: String = "" 
+0

Super, das funktioniert! Ich habe vergessen zu erwähnen, aber ich habe es auch versucht, wusste aber nicht von 'field = value', also jetzt funktioniert es! –