UITableView与Realm支持的数据库和在线同步

时间:2015-08-06 08:01:49

标签: ios swift uitableview grand-central-dispatch realm

我需要使用UITableView实现一个控制器来填充数据 Realm和后来的另一个线程将Realm的数据库与在线同步 网络服务。换句话说,我想拥有一个可能的控制器 在离线模式下工作。

我打算这样做。因为这是我第一次使用Realm和GCD, 如果我正确的话,我想承诺。

  1. 在我的控制器中,我将有一个实例var

    var countries: Results<Country>!

  2. 在控制器的viewDidLoad()中,我将使用数据填充此ivar:

    countries = Realm().objects(Country)
    
  3. 其余部分尚未编写,因此我不会提供代码。

    1. viewDidLoad()结束时,我将dispatch_async下载任务 我的UITableView的在线数据。

    2. 下载完成后,我将在主队列上调度任务一个任务 其中:

    3. 4.1。将重新分配controller.countries和
      4.2。将调用controller.reloadData()重新加载UITableView

      我是在正确的路上吗?

      谢谢。

1 个答案:

答案 0 :(得分:0)

你大多是正确的。我只对你的方式进行了修正。

  

4.1。将重新分配controller.countries

RLMResults具有一切始终都是最新的功能。当您提交添加到Realm下载数据的事务时,最新数据将反映到RLMResults。因此,您无需重新分配controller.countries。您可以在提交交易时调用controller.reloadData()

还有一种使用通知的方法。每次提交写入事务时,Realm实例都会向其他线程上的其他实例发送通知。如果您向领域注册了通知块,则可以在块中重新加载表视图。

另请参阅TableView示例代码https://github.com/realm/realm-cocoa/tree/master/examples/ios/objc/TableView 它展示了如何将Realm与UITableView和后台操作一起使用。