我正在尝试找到一种方法来观察核心数据中一对多关系的变化。设置非常简单,我的主视图控制器只是一个列出电视网络的表格视图控制器:
这些电视网络通过套接字流进行更新,并且获取的结果控制器使表格视图保持同步。我希望能够利用电视网络并具有该电视网络的详细视图,从而实时更新电视台。
父母:
孩子:
从tableview控制器上轻按BBC单元将选择到DetailTableViewController并将TVNetwork对象注入到其中(我的提取结果控制器仍在使用主表视图控制器作为其代理,因为它不断更新)。
class DetailTableViewController: UITableViewController {
var tvNetwork: TVNetwork!
var stations: [Stations]? {
get {
let descriptor = NSSortDescriptor(key: "channel", ascending: true)
return tvNetwork.stations?.sortedArray(using: [descriptor]) as? [Stations]
}
}
override func viewDidLoad() {
super.viewDidLoad()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return stations?.count ?? 0
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "stationDetailCell", for: indexPath) as? StationDetailCell {
let station = stations![indexPath.row]
cell.channelLabel.text = station.channel
cell.nowPlayingLabel.text = station.nowPlaying
cell.viewers.text = "\(station.viewers)"
return cell
}
return UITableViewCell()
}
}
此代码正常工作,手动重新加载将始终显示正确的最新数据。我已经在tvNetwork对象上尝试了一些通知方法,尽管事实上正在更新电台,但我没有得到通知(也许观察者仅针对属性而不是关系工作?)。有没有简单的方法可以观察到属于tvNetwork的NSSet“站”何时被更新,插入或删除?谢谢。