ios - RxCoreData UI 没有更新

标签 ios swift core-data

RxCoreData bindTo TableView 如何在更改模型时更新 UI

class ViewController: UIViewController {

@IBOutlet weak var tableView: UITableView!
@IBOutlet weak var addBarButtonItem: UIBarButtonItem!

var managedObjectContext: NSManagedObjectContext!

let disposeBag = DisposeBag()

override func viewDidLoad() {
    super.viewDidLoad()

    bindUI()
    configureTableView()

}

func bindUI() {

    addBarButtonItem.rx.tap
        .map { _ in
            Event(id: "1", date: Date(timeIntervalSince1970: 0))
    /* Change   Date(timeIntervalSince1970: 1)   */
        }.subscribe(onNext: { [weak self] (event) in
            _ = try? self?.managedObjectContext.rx.update(event)
        })
        .addDisposableTo(disposeBag)

}

func configureTableView() {

    tableView.isEditing = true

let animatedDataSource = RxTableViewSectionedAnimatedDataSource<AnimatableSectionModel<String, Event>>()

animatedDataSource.configureCell = { dateSource, tableView, indexPath, event in
    let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath)
    cell.textLabel?.text = "\(event.date)"
    print("\(event.date)")
    return cell
}

managedObjectContext.rx.entities(Event.self, sortDescriptors:[NSSortDescriptor(key: "date", ascending: false)])
        .map { events in

[AnimatableSectionModel(model: "Section 1", items: events)]

}
.bindTo(tableView.rx.items(dataSource: animatedDataSource))
.addDisposableTo(disposeBag)
  }
}

如何更新用户界面

事件(id:“1”,日期:日期(timeIntervalSince1970:0))

变成Event(id: "1", date: Date(timeIntervalSince1970: 1))

最佳答案

关于ios - RxCoreData UI 没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41254727/

相关文章:

ios - 如何在 NSPredicate 中使用 “ANY” 聚合操作来过滤 CoreData 多对多关系

ios - 为什么DispatchGroup会干扰主队列?

ios - 蓝牙 UUID iOS

ios - 自定义 UIbutton 默认颜色 Xcode Swift

ios - Cloud Firestore 身份验证 iOS

ios - 当核心数据文件损坏时如何绕过警报消息?

ios - -endEditing 与条件语句在关闭键盘时的性能

html - 使用 AFNetworking 上传图像 iOS 时匹配您的特定 HTML 表单

iOS 崩溃核心位置 CFBasicHashCreateCopy?

iphone - 在 NSManagedObject 上设置 double 属性的值