2016-07-29 6 views
0

Swiftでレルムにデータを保存できないようです!データをrealmに保存できません

私は、次のしている私のクラスの一つで

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

は私のレルムクラスはNSUUIDは、私が保存できないデータだけではありませんEDIT 2

、以下は別の例である

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

} 

ですレルムを使用して保存できないように見えるデータ:

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

おそらくクラスは、クラスを追加しました – xmhafiz

+0

その変数のための 'dynamic'を持っており、それがない、あなたの' RealmWallet'コードクラスを追加してください!動的でなければならないのでしょうか? – tobyapp

+0

デフォルト設定( 'Realm.Configuration.defaultConfiguration')をまったく変更していませんか?また、アプリケーションにディスク上のファイルを削除するためのコードがありますか?スタートアップ時? – AustinZ

答えて

0

結果の数が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

関連する問題