带有 Realm 支持的数据库和在线同步的 UITableView
UITableView with Realm backed db and online syncing
我需要使用 UITableView 实现一个控制器,该控制器从
一个领域,稍后另一个线程将领域的数据库与在线同步
网络服务。换句话说,我想要一个有可能的控制器
在离线模式下工作。
我打算这样做。因为这是我第一次接触 Realm 和 GCD,
我想知道我的方法是否正确。
在我的控制器中,我将有一个实例 var
var countries: Results<Country>!
在控制器的 viewDidLoad()
中,我将使用数据填充此 ivar:
countries = Realm().objects(Country)
剩下的部分还没写,就不补代码了
在viewDidLoad()
结束时我会dispatch_async
一个下载任务
我的 UITableView 的在线数据。
下载完成后我会在主队列上dispatch_sync一个任务
其中:
4.1。将重新分配 controller.countries 和
4.2.将调用 controller.reloadData()
重新加载 UITableView
我走的路对吗?
谢谢。
你基本上是对的。我对你的方式只有一个更正。
4.1. Will reassign the controller.countries
RLMResults
的特点是一切都是最新的。当您提交添加到 Realm 下载数据的事务时,最新数据将反映到 RLMResults
。所以你不需要重新分配 controller.countries
。您可以在事务提交时调用 controller.reloadData()
。
还有一些使用通知的方法。每次提交写入事务时,Realm 实例都会向其他线程上的其他实例发送通知。如果您将通知块注册到您的领域,您可以重新加载块中的 table 视图。
另请参阅 TableView
示例代码 https://github.com/realm/realm-cocoa/tree/master/examples/ios/objc/TableView
它展示了如何将 Realm 与 UITableView 和后台操作一起使用。
我需要使用 UITableView 实现一个控制器,该控制器从 一个领域,稍后另一个线程将领域的数据库与在线同步 网络服务。换句话说,我想要一个有可能的控制器 在离线模式下工作。
我打算这样做。因为这是我第一次接触 Realm 和 GCD, 我想知道我的方法是否正确。
在我的控制器中,我将有一个实例 var
var countries: Results<Country>!
在控制器的
viewDidLoad()
中,我将使用数据填充此 ivar:countries = Realm().objects(Country)
剩下的部分还没写,就不补代码了
在
viewDidLoad()
结束时我会dispatch_async
一个下载任务 我的 UITableView 的在线数据。下载完成后我会在主队列上dispatch_sync一个任务 其中:
4.1。将重新分配 controller.countries 和
4.2.将调用 controller.reloadData()
重新加载 UITableView
我走的路对吗?
谢谢。
你基本上是对的。我对你的方式只有一个更正。
4.1. Will reassign the controller.countries
RLMResults
的特点是一切都是最新的。当您提交添加到 Realm 下载数据的事务时,最新数据将反映到 RLMResults
。所以你不需要重新分配 controller.countries
。您可以在事务提交时调用 controller.reloadData()
。
还有一些使用通知的方法。每次提交写入事务时,Realm 实例都会向其他线程上的其他实例发送通知。如果您将通知块注册到您的领域,您可以重新加载块中的 table 视图。
另请参阅 TableView
示例代码 https://github.com/realm/realm-cocoa/tree/master/examples/ios/objc/TableView
它展示了如何将 Realm 与 UITableView 和后台操作一起使用。