无法将数据保存到领域

无法将数据保存到领域

问题描述:

我似乎无法将数据保存到Swift中的领域!无法将数据保存到领域

在我的班级之一,我有以下几点:

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 
    } 
} 
} 

,它似乎不保存数据!在我的应用程序和其保存数据中,我有类似于此的代码,但这不是!

另外我在尝试保留数据时遇到问题,在启动应用程序后,数据使用领域(我可以使用领域浏览器进行验证)存储。但是,一旦我重新启动应用程序,数据不再存在于领域!有没有人有任何建议,为什么数据不会被持续?

EDIT 1

这是我的境界类

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" 
} 

} 

编辑2

的NSUUID不是其本人不能保存的唯一数据,以下是另一个例子的数据,我似乎无法使用Realm保存:

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

请添加您的'RealmWallet'代码类,或许类有'dynamic'其变量 – xmhafiz

+0

添加了类,它呢!它应该没有动态吗? – tobyapp

+0

您是否修改默认配置('Realm.Configuration.defaultConfiguration')?此外,您是否有应用中的任何代码来删除磁盘上的文件,例如在启动? – AustinZ

如果您的结果数为0,则不会进入for循环。 改为尝试此操作。

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

仍然因为某种原因不保存! – tobyapp