簡體   English   中英

無法將數據保存到領域

[英]Cannot save data to realm

我似乎無法在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
   }
 }
}

而且它似乎並沒有保存數據! 在我的整個應用程序及其保存數據中都具有與此類似的代碼,但事實並非如此!

另外,我在嘗試持久保存數據時遇到了麻煩,在啟動應用程序后,數據使用領域存儲(我可以使用領域瀏覽器進行驗證)。 但是,一旦我重新啟動該應用程序,數據將不再存在! 是否有人對為什么不保留數據有任何建議?

編輯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,則不會進入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
    }
}

我遇到了同樣的問題。 在我的領域類中,我在存儲的屬性前面缺少@objc動態。 因此,如下所示添加了它。 然后它對我有用。

 @objc dynamic var address: Addres!
 @objc dynamic var checklist: Checklist!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM