如何处理反应式编程更新和CollectionView

时间:2018-10-29 10:18:40

标签: swift uicollectionview rx-swift reactive-swift

我有一个Web套接字,可以向MutableProperty<[Stuff]>添加或删除数据

但是当我用collectionView重新加载collectionView.reloadData()时。 Web套接字将数据添加到MutableProperty<[Stuff]>或从中删除数据,因此它将崩溃

由于多种原因,这里有一些错误:

  • collectionView方法使用我的列表时索引超出范围
  • 无效数量的项目导致崩溃,例如:Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of sections. The number of sections contained in the collection view after the update (58) must be equal to the number of sections contained in the collection view before the update (59), plus or minus the number of sections inserted or deleted (0 inserted, 0 deleted).'

有人对此有好的建议或最佳做法吗? 我已经看到MutableProperty是线程安全的

我知道为什么会崩溃。它崩溃是因为websocket在reloadData的{​​{1}}期间从数组中添加或删除了数组中的值,但我不知道如何解决。 我知道我们可以使用信号量,但我正在寻找优雅的东西

1 个答案:

答案 0 :(得分:0)

您应该向我们展示更多代码,以便我们更好地理解。 但是,如果您在委托:numberOfSectionsnumberOfRowsInSection中返回固定值,则需要在调用collectionView.reloadData()之前对其进行更新,以便这两个委托在每个委托中返回节和项的确切数目。部分。