ios - iOS13 DiffableDataSource 无效参数不满足:indexPath || 忽略无效项
问题描述
我正在将我的集合视图转换为新的 iOS13 UICollectionViewDiffableDataSource...所以我需要按需更新单元格信息。
这是我的代码:
let snap = self.diffDataSouce.snapshot
snap?.reloadItems(withIdentifiers: [itemToUpdate]) //reload cell info
self.diffDataSouce.apply(snap, animatingDifferences: true)
但我明白Invalid parameter not satisfying: indexPath || ignoreInvalidItems
了……为什么?我的当前snap
包含itemToUpdate
以及我的模型数组...
我认为这是因为snap.indexOfItemIdentifier(itemToUpdate)
找不到返回(NSNotFound)......但根据数据模型这应该是不可能的。
你有什么提示吗?
解决方案
您的数据模型必须符合Hashable
and Equatable
,以便差异算法可以跟踪快照之间的变化。
如果两个对象之间存在冲突问题,或者您已经以允许两个对象看起来与差异算法相同的方式实现了这些协议中的任何一个,您将获得运行时断言异常。
我会准确追踪您的模型对象是如何继承或实现这些协议的。
推荐阅读
- unix - 在文本文件中找到一个字符串并用变量替换该行
- javascript - 我的函数没有在 javascript/vue 中被调用
- excel - 如何为列中的每个结果编码以粘贴文本
- c# - 如何将动态类传递给泛型函数?
- python - 如何获得特定的位数?Python
- node.js - Cron 作业无故失败
- opencart2.x - 处理 Opencart 2.x 货币
- apache-kafka - 将“读取偏移”作为卡夫卡消费者的不良做法吗?
- mysql - SELECT/LOCATE 查询输出不正确的结果
- android - 使用 FireBase 的 Android In App 通知显示