2016-07-18 8 views
1

bin ich eine neue in Xcode Entwicklung und ich brauche etwas Hilfe mit Realm-Datenbank .. das sind meine TabellenRealm.objects (Type) zurückgeben leere Objekte

class Parent: Object { 
    var id :Int = 0 
    var name: String = "" 
} 

class Surah: Parent { 
    dynamic var ayatNum = 0 

    private var fav : Bool { 
     set { self.fav = newValue } 
     get { return self.fav } 
    } 

    init(id: Int , ayat: Int , name: String) { 
     super.init() 
     super.id = id 
     self.ayatNum = ayat 
     super.name = name 
    } 

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

    required init(realm: RLMRealm, schema: RLMObjectSchema) { 
     super.init() 
    } 

    required init(value: AnyObject, schema: RLMSchema) { 
     super.init() 
    } 

    required init() { 
     super.init() 
    } 
} 

class Reader: Parent{ 
    private var fav: Bool { 
     set { self.fav = newValue } 
     get { return self.fav } 
    } 

    init(id: Int , name: String) { 
     super.init() 
     self.id = id 
     self.name = name 

    } 

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

    required init(realm: RLMRealm, schema: RLMObjectSchema) { 
     super.init() 
    } 

    required init(value: AnyObject, schema: RLMSchema) { 
     super.init() 
    } 

    required init() { 
     super.init() 
    } 
} 

und wenn nenne ich diese Zeilen und speichern und die Ergebnisse in einem Array ausdrucken

realm = try!Realm() 
readers = Array(realm.objects(Reader.self)) 
print(readers) 

und ich versuche auch dieses

readers = Array(try!Realm().objects(Reader.self)) 
print(readers) 

es drucken s eine leere Objekte

Reader { 
    id = 0; 
    name = ; 
}, Reader { 
    id = 0; 
    name = ; 
}, Reader { 
    id = 0; 
    name = ; 
} 

ich über dieses Problem in Stackoverflow zu suchen und diese Lösung finden, die nicht mein Problem

Realm.objects() returns empty objects

kann jemand mir helfen, lösen !!

Antwort

3

Weil Ihre Parent Klasse Eigenschaften nicht als dynamic erklärt hinzuzufügen. Der größte Teil der Eigenschaft im Realm muss als dynamic deklariert sein (Ausnahme ist List und LinkingObjects). Realm hat alle Werte für die Leistung geladen. Der gesamte Zugriff auf Eigenschaften wird zur Laufzeit durch einen speziellen Accessor ersetzt. Sie sollten also die Eigenschaften als dynamic deklarieren. Wie folgt aus:

class Parent :Object{ 
    dynamic var id: Int=0 
    dynamic var name: String="" 
} 

Siehe https://realm.io/docs/swift/latest/#cheatsheet

, auch Surah Klasse und Reader Klasse wird viel einfacher convenience initializer verwenden. Wenn dies der Fall ist, müssen Sie init(realm: RLMRealm, schema: RLMObjectSchema), init(value: AnyObject, schema: RLMSchema) und init() nicht außer Kraft setzen.

+0

thaaanks viel super – Inspiration

-1

Versuchen Sie dieses get Objekt von Reich

let realm = try! Realm() 
override func viewDidLoad() { 
    super.viewDidLoad() 

    // retrieve all objects from realm 
    let readers = realm.objects(Reader) 
    print(readers) 
} 
+0

Die Daten sind bereits in der Datenbank, ich kann die Daten im Realm-Browser sehen, aber wenn ich versuche, es zu bekommen und es zu drucken, druckt es leere Eigenschaften !! – Inspiration

+0

Ich aktualisierte meine Antwort, ich benutze immer diesen Weg ohne Fehler – xmhafiz

+0

es löst nicht mein Problem! – Inspiration