2016-07-29 42 views
0

Ich kann nicht scheinen, Daten in Realm in Swift zu speichern!Daten können nicht in Realm gespeichert werden

In einer meiner Klassen Ich habe folgendes:

func getDeviceIdAndPersist(){ 
print("getDeviceIdAndPersist") 
let realm = try! Realm() 
let realmWallet = RealmWallet() 
let realmResults = realm.objects(RealmWallet.self) 
for results in realmResults { 
    guard results.deviceId != nil else { 
    realmWallet.deviceId = NSUUID().UUIDString 
    try! realm.write() { 
     realm.add(realmWallet, update: true) 
    } 
    return 
    } 
} 
} 

Und es scheint nicht, die Daten zu speichern! Ich habe Code ähnlich zu diesem während meiner Anwendung und seine speichernden Daten, aber das ist nicht!

Auch habe ich Probleme beim Versuch, meine Daten zu persistieren, nachdem ich die Anwendung gestartet habe, werden die Daten mit Realm gespeichert (was ich mit dem Realm-Browser überprüfen kann). Sobald ich die Anwendung neu starte, existieren die Daten nicht mehr in Realm! Hat jemand irgendwelche Vorschläge, warum die Daten nicht beibehalten werden?

EDIT 1

Hier ist mein Reich Klasse

class RealmWallet: Object { 
    dynamic var publicKey = NSData() 
    dynamic var preferredAddress = "" 
    dynamic var id = 0 
    let walletAddresses = List<Addresses>() 
    dynamic var fee: NSNumber = 0.0 
    dynamic var deviceId: String? = nil 
    dynamic var tempPreTax: String? = nil 
    dynamic var portalToken: String? = nil 
    let walletHasBackup = RealmOptional<Bool>() 
    let alreadyAskedForBluetooth = RealmOptional<Bool>() 
    let insecureMailSent = RealmOptional<Bool>() 
    let cameraAccessGranted = RealmOptional<Bool>() 
    let idNowSuccess = RealmOptional<Bool>() 
    dynamic var marketInfos = NSData() 

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

} 

EDIT 2

Die NSUUID nicht die einzigen Daten, die ich nicht speichern kann, wird die folgende ist ein weiteres Beispiel von Daten, die ich mit Realm nicht speichern kann:

onboardingModal!.bluetoothPressed = {() -> Void in 
print("after onboardingModal") 
    self.cbManager = CBCentralManager(delegate: self, queue: nil) 
    print("REALM") 
    let realm = try! Realm() 

    do { 
    try! realm.write { 
     print("IN WRITE") 
     self.realmWallet.alreadyAskedForBluetooth.value = true 
     realm.add(self.realmWallet, update: true) 
    } 
    } 
} 
+0

bitte Ihre 'RealmWallet' Code-Klasse hinzufügen, vielleicht hat die Klasse die' dynamic' für seine Variablen – xmhafiz

+0

die Klasse hinzugefügt, und es tut! Sollte es dann keine Dynamik haben? – tobyapp

+0

Ändern Sie die Standardkonfiguration ('Realm.Configuration.defaultConfiguration') überhaupt? Haben Sie auch Code in Ihrer App, um Dateien auf der Festplatte zu entfernen, z. am Anfang? – AustinZ

Antwort

0

Wenn die Anzahl der Ergebnisse 0 ist, wird die for-Schleife nicht angezeigt. Versuchen Sie es stattdessen.

func getDeviceIdAndPersist() { 
    let realm = try! Realm() 
    let realmResults = realm.objects(RealmWallet.self) 
    guard results.count > 0 else { 
     let realmWallet = RealmWallet() 
     realmWallet.deviceId = NSUUID().UUIDString 
     try! realm.write() { 
      realm.add(realmWallet, update: true) 
     } 
     return 
    } 
} 
+0

Es speichert immer noch nicht, aus irgendeinem Grund! – tobyapp

Verwandte Themen