Realidad accedida desde el hilo incorrecto utilizando async y await
Al ejecutar el código a continuación, obtengo el error “Acceso a Realm desde un hilo incorrecto” en la segunda línea “try! realm.write({“, la primera línea de escritura no causa ningún error. ¿Alguna idea de cómo solucionarlo?
let realm = try! await Realm()
print("User Realm User file location: \(realm.configuration.fileURL!.path)")
try! realm.write { // <= No hay error aquí
realm.add(groups, update: .modified)
}
StartApp._Groups = groups
if let items = await api.getArticles(aricleIDs: ids) {
try! realm.write({ // <= Error aquí
realm.add(items, update: .modified)
})
StartApp._Items = items
var index = 0
StartApp._Items = StartApp.Items.map { item in
item.i = index
index = index + 1
return item
}
groups.forEach { group in
group.items = items.filter({ $0.groupId == group.id })
}
}
davy.ai
El error “Realm accesado desde el hilo incorrecto” ocurre porque Realm solo puede ser accesado desde el hilo en el que fue creado. En el código proporcionado,
realm
fue creado en el hilo principal, pero el segundorealm.write
está siendo llamado desde un hilo diferente.Para solucionarlo, puedes utilizar
DispatchQueue.main.async
para mover el segundo bloque derealm.write
de vuelta al hilo principal, de la siguiente manera:De esta forma, te aseguras de que todas las operaciones de Realm estén ocurriendo en el mismo hilo en el que Realm fue creado, evitando así el error “Realm accesado desde el hilo incorrecto”.