RxSwift+;RxRealm+;RxCocoa将行插入UITableView
当我观察我的领域模型并将更改绑定到表视图时,它就工作了。但当我试图向表中添加行时,出现了一些崩溃 由于未捕获异常而终止应用程序 “NSInternalInconsistencyException”,原因:'尝试插入第1行 到节0中,但在 更新' 我可以不用标准的委托方法来完成吗 这是我的代码片段RxSwift+;RxRealm+;RxCocoa将行插入UITableView,swift,realm,rx-swift,rx-cocoa,Swift,Realm,Rx Swift,Rx Cocoa,当我观察我的领域模型并将更改绑定到表视图时,它就工作了。但当我试图向表中添加行时,出现了一些崩溃 由于未捕获异常而终止应用程序 “NSInternalInconsistencyException”,原因:'尝试插入第1行 到节0中,但在 更新' 我可以不用标准的委托方法来完成吗 这是我的代码片段 let realm = try! Realm() let places = realm.objects(Place.self) Observable.from(pla
let realm = try! Realm()
let places = realm.objects(Place.self)
Observable.from(places)
.bindTo(tableView.rx.items(cellIdentifier: "PlaceCell", cellType: PlaceCell.self)) { (row, element, cell) in
let viewModel = PlaceCellViewModel(place: element)
cell.setup(viewModel: viewModel)
}
.addDisposableTo(disposeBag)
Observable.changesetFrom(places).subscribe(onNext: { [weak self] result, changes in
if let changes = changes {
self?.tableView.beginUpdates()
let indexes = changes.inserted.map { IndexPath(row: $0, section: 0) }
self?.tableView.insertRows(at: indexes, with: .bottom)
self?.tableView.endUpdates()
} else {
self?.tableView.reloadData()
}
})
.addDisposableTo(disposeBag)
目前,您有两个订阅在竞相更新表
reloadData()
)目前RxRealm中没有包装器可以在活页夹中包装精细授权的通知(不过,您可以在RxRealm repo上创建一个关于它的问题!) 如果希望对表行进行动画更改,则必须实现表视图数据源方法,如下所示:
更新#1:我想补充一点,在这之后的一段时间(以及其他类似的问题),我启动了一个
RxRealmDataSources
库,它的工作原理与普通的RxDataSources
库非常相似,但特别是为了适应绑定领域类型。lib负责将RxRealm可观测绑定到iOS和macOS上的表或集合视图,并使用必要的动画更新它们
这是GitHub的报告:目前,您有两个订阅在竞相更新表
reloadData()
)目前RxRealm中没有包装器可以在活页夹中包装精细授权的通知(不过,您可以在RxRealm repo上创建一个关于它的问题!) 如果希望对表行进行动画更改,则必须实现表视图数据源方法,如下所示:
更新#1:我想补充一点,在这之后的一段时间(以及其他类似的问题),我启动了一个
RxRealmDataSources
库,它的工作原理与普通的RxDataSources
库非常相似,但特别是为了适应绑定领域类型。lib负责将RxRealm可观测绑定到iOS和macOS上的表或集合视图,并使用必要的动画更新它们
以下是GitHub回购协议: