2016-07-29 2 views
0

Я не могу сохранить данные в области в 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" 
} 

} 

EDIT 2

NSUUID не только данные, которые я не могу сохранить, следующий еще один пример данных, которые я, похоже, не могу сэкономить, используя Королевство:

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

Если ваш результат равен 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

Смежные вопросы