2017-11-23 2 views
0

Im mit Realm DB zum Speichern von Offline-Daten in iOS. Kann ich Array-Werte ohne Verwendung der for-Schleife direkt in der Realm DB speichern?Speichern Array-Werte in einer Realm-Datenbank

+0

Warum möchten Sie keine for-Schleife verwenden? – Sweeper

+0

können Sie Code anzeigen, wie Sie die Daten in Realm speichern? –

Antwort

0

standardmäßig Sie nicht dies tun, Realm verwendet Lists:

Liste ist der Containertyp in Realm verwendet zu vielen Beziehungen zu definieren.

Wie das Swift-Array ist List ein generischer Typ, der unter als Objekttyp gespeichert wird.

class MyObject: Object { 
    dynamic var name = "Default" 
} 

func listToArray() { 
    let objectsArray = [MyObject(), MyObject(), MyObject(), MyObject(), MyObject()] 
    var objectsRealmList = List<MyObject>() 

    objectsRealmList = objectsArray 
} 

Wenn Sie so etwas wie objectsRealmList = objectsArray denken, die illegal sein würden Sie nicht ein Array in einen Bereich Liste zuweisen.

So wie die gleiche Logik in this answer, würden Sie durch objectsArray laufen müssen:

func arrayToList() { 
    let objectsArray = [MyObject(), MyObject(), MyObject(), MyObject(), MyObject()] 
    let objectsRealmList = List<MyObject>() 

    // this one is illegal 
    //objectsRealmList = objectsArray 

    for object in objectsArray { 
     objectsRealmList.append(object) 
    } 

    // storing the data... 
    let realm = try! Realm() 
    try! realm.write { 
     realm.add(objectsRealmList) 
    } 
} 

Üblicherweise wird die Liste als eine Eigenschaft eines Objekts sein würde, sollten Sie das Objekt selbst hinzufügen.