Sto usando RealmSwift
per il mio progetto. Tuttavia, non sono sicuro di come affrontare il seguente:RealmSwift RLMException
RMLException
: Il tentativo di modificare l'oggetto al di fuori di una transazione di scrittura - chiamanobeginWriteTransaction
su unRLMRealm
un'istanza prima
gettato.
Qualche idea?
import RealmSwift
func createOrUpdateMachineInRealm(machine: Machine){
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
// do some task
let realm = Realm()
realm.beginWrite()
realm.write{
realm.add(machine, update: true)
}
realm.commitWrite()
dispatch_async(dispatch_get_main_queue()) {
// update some UI
actionDelegate?.operationCompleted(true)
}
}
}
Soluzione: mi passa i parametri per la macchina così e assegnarli alla macchina all'interno del realm.write()
func createOrUpdateMachineInRealm(machine: Machine, name: String){
let priority = DISPATCH_QUEUE_PRIORITY_DEFAULT
dispatch_async(dispatch_get_global_queue(priority, 0)) {
// do some task
let realm = Realm()
realm.write{
machine.name = name
realm.add(machine, update: true)
}
}
}
Grazie per la risposta @NateMann. Sono in grado di aggiungerlo la prima volta senza errori. Tuttavia ho questa applicazione di terminazione a causa dell'eccezione non rilevata RLMException, motivo: "Tentativo di modificare l'oggetto al di fuori di una transazione di scrittura - chiama beginWriteTransaction su un'istanza di RLMRealm first.'' quando chiamo di nuovo il metodo (per aggiornare). – perwyl
Stai aggiungendo una macchina o aggiornandone una. Se si sta aggiornando uno, dire machine.name = "Drill", questo deve essere fatto in Realm(). Write {}, come questo Realm(). Write {machine.name = "Drill"} –
E 'possibile per per aggiornare l'oggetto Machine al livello dell'interfaccia utente e passare a Realm() (Storage.swift) per la transazione di scrittura? Sto cercando di evitare l'utilizzo di Realm su ViewControllers. Molto nuovo a realmSwift – perwyl