При сохранении объекта асинхронно в фоновом режиме я получаю RLMException: «Невозможно добавить объекты из другого королевства». Однако одно и то же сохранение отлично работает, если удалить асинхронный код.RLMException при сохранении объекта в фоновом потоке
Этот объект имеет отношение к существующему объекту. Например:
class Person: Object {
name: String
school: School
}
class School: Object {
name: String
}
let person = new Person()
person.name = "John"
person.school = school // Existing object selected from a dropdown.
DispatchQueue.global().async {
do {
let realm = try Realm!
try realm.write {
realm.add(person, update: true)
}
DispatchQueue.main.async {
// Success!
}
} catch let error as NSError {
DispatchQueue.main.async {
// Error!
}
}
}
Этот код приводит к сбою. Однако, если я удалю DispatchQueye.global(). Async, все работает нормально. Есть ли какая-то проблема с потоками, с которой я сталкиваюсь?
Примечание: объект school
еще не существует и выбран из коллекции Results<School>
.
Спасибо, что указал мне в правильном направлении. Одна из ошибок, которые я делал, - это создать человека на главной теме, как вы указали. Ура! – melsam
Не беспокойтесь! Рад, что смог помочь! :) – TiM
Я чувствую, что Realm может сделать с лучшей документацией. –