我目前有一个包含三个对象的Realm数据库:
class Language: Object {
let lists = List<List>()
}
class List: Object {
let words = List<Word>()
}
class Word: Object {
dynamic var name : String = ""
}
所以对象关系是:语言 - &gt;清单 - &gt;字
我分别在UITableView,LanguageTableViewController,ListTableViewController和WordTableViewController中显示这些对象。 要在发生更改时更新TableView,我在LanguageTableViewController中使用Realm Notifications:
languageToken = languages.addNotificationBlock { [weak self] (changes: RealmCollectionChange) in
self?.updateLanguages(changes: changes)
}
使用当前方法更新TableView(方法基于Realm站点的教程):
func updateLanguages<T>(changes: RealmCollectionChange<T>) {
switch changes {
case .initial:
self.tableView.reloadData()
case .update(_, let deletions, let insertions, let updates):
self.tableView.beginUpdates()
self.tableView.insertRows(at: insertions.map {IndexPath(row: $0, section: 0)}, with: .automatic)
self.tableView.reloadRows(at: updates.map {IndexPath(row: $0, section: 0)}, with: .automatic)
self.tableView.deleteRows(at: deletions.map {IndexPath(row: $0, section: 0)}, with: .automatic)
self.tableView.endUpdates()
default: break
}
}
现在我的问题:当添加或更新新的“语言”对象时,此方法有效。但是,当创建新的List或Word对象时,也会调用此方法 - 使用插入更新。这会导致UITableView异常,因为没有创建Language对象,但updateLanguages方法想要插入新单元格。
我的问题是:我怎样才能监控对象数量/数量的变化?或者有更好的方法解决这个问题吗?