Проблема с "Realm accessed from incorrect thread"

realm

#1

Друзья, помогите пожалуйста разобраться.
Пишу апу (на swiftUI) которой необходимо парсить список товаров из гугл таблицы и локально их сохранять с помощью рилма, ну а так же удалять/обновлять/и тд. С самим парсингом и сохранением проблем нет, но нужно чтобы при нажатии “загрузить”/“обновить”/“удалить” поверх списка и кнопок ставилась заглушка с серым фоном прогрессвью пока процесс не закончится. Все работает как задумано, когда я завожу функции по сохранению/обновлению в фоновый поток, но только один раз (хотя иногда и два что странно), если снова попытаться что-то сделать, выдает “Realm accessed from incorrect thread.”. Поток я создаю константой в менеджере вне функций.
Можете подсказать в чем проблема?


#2

Давно с рилмом не работал, но вроде общаться к обьекту рилма нужно в том потоке в котором вы его создаете


#3

Если работаете с реалмом или объектом реалма в замыкании, оборачивайте в DispatchQueue.main.async


#4


В замыкании я на экране со списком и кнопками меняю булевую переменную


#5

Вы явно используете реалм не в основном потоке.
Еще у вас completion не совсем правильный.


#6

Елки, если перевести в основной поток, то приложение не крашится, мне казалось я проверял. Спасибо тебе, очень помог!)

Кстати, а как именно completion не правильный?


#7

completion сработает быстрее чем закончат свою работу методы load или update.
если нужно выполнить код по завершении этих методов, completion нужно передавать в них.