核心数据在后台
CoreData in the background
所以到目前为止我一直在主线程中使用CoreData。我想要实现的是创建一个单独的后台线程并在那里完成所有 CoreData 工作。我已经阅读了很多关于 CoreData 的资料,但是所有的后台解决方案似乎都比我实际需要的要复杂。我唯一需要的是能够在不阻塞 UI 的情况下写入和读取 CoreData。我不关心写入或读取发生的速度有多快,所以如果有 100 个对 CoreData 的读取请求让它们等待并慢慢执行,主要思想是不要阻塞 UI。在许多 CoreData 多线程方法中,解决该问题的最佳方法是什么?
我已准备好所有功能,我只想在其他线程(但不是主线程)上实现它 运行。而且它不像在另一个线程上调度它那么容易(因为我试过了)
您可以尝试的最简单的事情是让您的主 MOC 成为私有排队后台 MOC 的子 MOC。这将允许 -save:
在后台发生。读取将花费相同的时间。 -save:
是一个你必须精心安排的两阶段保存。第一次保存从主 MOC 到后台 MOC。第二次保存将在后台线程上将数据推送到持久存储。
所以到目前为止我一直在主线程中使用CoreData。我想要实现的是创建一个单独的后台线程并在那里完成所有 CoreData 工作。我已经阅读了很多关于 CoreData 的资料,但是所有的后台解决方案似乎都比我实际需要的要复杂。我唯一需要的是能够在不阻塞 UI 的情况下写入和读取 CoreData。我不关心写入或读取发生的速度有多快,所以如果有 100 个对 CoreData 的读取请求让它们等待并慢慢执行,主要思想是不要阻塞 UI。在许多 CoreData 多线程方法中,解决该问题的最佳方法是什么?
我已准备好所有功能,我只想在其他线程(但不是主线程)上实现它 运行。而且它不像在另一个线程上调度它那么容易(因为我试过了)
您可以尝试的最简单的事情是让您的主 MOC 成为私有排队后台 MOC 的子 MOC。这将允许 -save:
在后台发生。读取将花费相同的时间。 -save:
是一个你必须精心安排的两阶段保存。第一次保存从主 MOC 到后台 MOC。第二次保存将在后台线程上将数据推送到持久存储。