2017-02-11 4 views
2

Ich bin neu in Realm und habe einige Male die Dokumentation durchgelesen. Ich brauche ein [[Zeichenfolge]] bestehen bleiben und haben keine Möglichkeit, es zu tun nochSwift Realm [[String]] Objekt

var tableViewArray = [[String]]() 

Ich sehe die Dokumentation zeigt auf Listen, aber ich war nicht erfolgreich bei deren Umsetzung gefunden. Ich zeige meinen ganzen Prozess hier aber brauche nur zu helfen, meinen var tableViewArray = [[String]]() in Realm persistierenden

Dies ist meine Klasse

class TableViewArrays { 

var tableViewArray = [[String]]() // populates the Main Tableview 

/// add picker selection to tableview array 
func appendTableViewArray(title: String, detail: String, icon: String) { 

     var newRow = [String]() 
     newRow.append(title) 
     newRow.append(detail) 
     newRow.append(icon) 
     tableViewArray.append(newRow) 
} 

im View-Controller I instanziiert das Objekt

var tableViewArrays = TableViewArrays() 

Dann rufen die Klassenfunktion zum Auffüllen des Objekts

var tableViewArrays.appendTableViewArray(title: String, detail: String, icon: String) 

Vielen Dank für einen Blick

+0

Können Sie nach dem Code, wo der Realm-Objekt Sie persistierenden deklariert wird? –

+0

Ich glaube, ich habe eine Lösung dafür. Hier sind die Objekte: – user6530825

+0

SORRY - haben Probleme beim Hinzufügen Codeblöcke - Klasse TableViewRow: Object { dynamisch var icon = "" dynamisches var title = "" dynamisches var Detail = "" Überschreibung var Beschreibung: String {return "TableViewRow {\ (Symbol), \ (Titel), \ (Detail)}"} } Klasse EventTableView: Objekt { let rows = Liste () // override var description: String {return "Car {\ (Marke), \ (Name), \ (Jahr)}"} } – user6530825

Antwort

2

Ich würde zwei Realm-Objekte beibehalten werden, dann verschachteln sie. Hier ein Beispiel:

class RealmString: Object { 
    dynamic var value = "" 
} 

class RealmStringArray: Object { 
    let strings = List<RealmString>() 
} 

class TableViewArray{ 
    let stringArrays = List<RealmStringArray>() 
} 

ich nicht viel über die Effizienz dieser Methode sagen kann, aber ich nehme an, es sollte für Ihren Zweck arbeiten. Wenn Sie über eine große Datenmenge verfügen, kann es außerdem mühsam sein, jede einzelne Zeichenfolge und dann die Zeichenkettensammlung, die Sammlung der Zeichenkettensammlung, beizubehalten.

+1

Danke Faris, nette Lösung und ich schätze die Hilfe! – user6530825

+0

Dies ist der empfohlene Weg, um es jetzt zu tun. Das Speichern von Arrays von Primitiven befindet sich auf der Roadmap für Realm (https://github.com/realm/realm-cocoa/issues/1120). Hoffentlich wird dies in Zukunft eine bessere Erfahrung sein. :) – TiM

+0

Fühlen Sie sich frei, eine Lösung zu markieren, mit der Sie zufrieden sind, als richtig! @ user6530825 –

1

die Klassen erstellen

class TableViewRow: Object { 
    dynamic var icon = "" 
    dynamic var title = "" 
    dynamic var detail = "" 

    override var description: String { 
    return "TableViewRow {\(icon), \(title), \(detail)}" } 
} 

class EventTableView: Object { 
    let rows = List<TableViewRow>() 
} 

die Objekte dann instanziiert und hängen

let defaultTableview = EventTableView() 
let rowOne = TableViewRow() 

rowOne.icon = "man icon" ; rowOne.title = "War Hans D.O.P." ; rowOne.detail = "Camera Order Nike 2/11/17" 

defaultTableview.rows.append(objectsIn: [rowOne])