2017-11-08 2 views
0

Mit Swift 4 und Realm 3.0.1 möchte ich eine Liste von Realm-Objekten in einer Eigenschaft eines übergeordneten Realms Objekts speichern. Ich stieß auf das folgende Problem:Wie behalte ich eine Realm List-Eigenschaft in Swift 4?

In Swift 4 müssen Eigenschaften, die in Realm beibehalten werden sollen @objc dynamic, z. @objc dynamic var id: String = "". Allerdings Realm Array Ersatztyp, List kann nicht auf diese Weise gespeichert werden: @objc dynamic var children: List<Child>? = nil diesen Compiler-Fehler verursacht:

Property cannot be marked @objc because its type cannot be represented in Objective-C

Weiteren Kontext, hier ist ein vollständiges Beispiel:

final class Child: Object { 
    @objc dynamic var name: String = "" 
} 

final class Parent: Object { 
    // this fails to compile 
    @objc dynamic var children1: List<Child>? 

    // this compiles but the children will not be persisted 
    var children2: List<Child>? 
} 

So gibt es eine andere Art und Weise Objektlisten in Realm und Swift 4 zu speichern?

Antwort

4

Realm List s kann nie nil sein, und sie brauchen nicht die @objc dynamic. Sie sollten nur let sein, obwohl ich das nicht speziell rief in der Dokumentation finden kann, gibt es eine comment aus einem Reich Bewerters, dass es speziell ruft

Es gibt eine cheat sheet für Objekte im documentation.

let dogs = List<Dog>()