我使用Realm結果對象Result<AnObject>
作爲uitableview
的數據源。在不同的視圖控制器中有一些延遲的API調用會加載更多的AnObject
對象。我想要的是當我的數據源被更新以更新表格視圖時得到通知。 我做了一些searchs,知道我需要使用KVO,但我找不到任何例如如何與realm.My代碼中使用它是像下面:Realm Swift結果更新時如何得到通知
class myViewController: UIViewController, UITableViewDatasource {
let realm = try! Realm()
override func viewDidLoad() {
super.ViewDidLoad()
var datasource = realm.objects(AnObject.self)
// I need to some how observe the change of datasource
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return datasource.count
}
...
}
更新 我試着在它工作之前使用realm.addNotificationBlock
(與@joern的答案中的方法相同),但是當任何領域對象不僅更新datasouce類型時,該塊將運行。它會重新加載太多的非偶然時間表。
更新2 我的應用程序包含在上半FSCalenar查看和鏈接到EventsViewController其對事件的tableview下半部的容器CalendarViewController。 我有很多事件需要很長時間才能從API中獲得。所以我打了20個電話給他們,他們每個人都得到一些事件。並在NSOperationQueue
中添加所有呼叫操作,然後根據我需要首先加載的操作優先級設置操作優先級。因此每個API調用在完成時更新數據源對象。我需要事件tableview來重新表達。 API調用發生在已由CalendarViewController調用的APIManager類方法中
謝謝你的快速回答。在它工作之前,我嘗試了這種方式,但是當任何領域對象不僅更新datasouce類型時,該塊將運行。它會重新加載太多的非偶然時間表。 – Ismail
你說得對。你可以添加更多關於你的應用程序結構的信息嗎?你在哪個類中更改數據源對象? – joern
我已根據您的評論更新了該問題。 – Ismail