Realm中常见的“Realm accessed from incorrect thread”问题的分析总结
Realm的Results
一旦在创建该变量的线程之外使用该变量,就会导致程序崩溃。
比如,今天我就是在请求通知权限的代码中使用了tasks变量。结果导致程序崩溃。因为这个请求是调用了系统的请求,不是程序本身的线程。
解决办法
- 新建realm,重新查询
- 使用临时变量,而不使用Results的变量。
- 使用DispatchQueue.main.async,更改执行的thread。
备注
print(Thread.current) //可以调试当前的thread