核心数据:后台获取



我看过很多类似的问题,但似乎没有答案。

我有一个后台线程,用来获取数据。

// bg queue
let context = // private context with NSPrivateQueueConcurrencyType
users = Model.MR_findAllSortedBy("username", ascending: true, inContext: context) as! [Model]

我想重载tableView在主线程与[模型]数组。如果我将users直接传递给主线程,它将导致未定义的行为(根据CD文档)。

另一方面,我有两个选择:

  1. 在主上下文中获取对象(这会导致UI阻塞)
  2. 传递objectId,这导致对象无故障(这导致UI阻塞)

正确的处理方法是什么?

最好的设置是使用带有NSFetchedResultsController的表视图(对于Magical Record也非常方便),并实现将自动更新表的NSFetchedResultsControllerDelegate

在主线程上很容易获取所有的数据和排序(FRC将优化并只获取表视图需要显示的内容)。这意味着你对选项1的假设。是不正确的

do { fetchedResultsController.performFetch() } catch {}
tableView.reloadData()

最新更新