在核心数据中观察关系变化的正确方法是什么

时间:2018-08-27 21:03:18

标签: ios swift core-data set key-value-observing

我正在尝试找到一种方法来观察核心数据中一对多关系的变化。设置非常简单,我的主视图控制器只是一个列出电视网络的表格视图控制器:

Main Table View Controller

这些电视网络通过套接字流进行更新,并且获取的结果控制器使表格视图保持同步。我希望能够利用电视网络并具有该电视网络的详细视图,从而实时更新电视台。

父母:

Parent

孩子:

Child

从tableview控制器上轻按BBC单元将选择到DetailTableViewController并将TVNetwork对象注入到其中(我的提取结果控制器仍在使用主表视图控制器作为其代理,因为它不断更新)。

DetailViewController

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“站”何时被更新,插入或删除?谢谢。

0 个答案:

没有答案