首页 > 解决方案 > 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)......但根据数据模型这应该是不可能的。

你有什么提示吗?

标签: iosios13diffabledatasourcensdiffabledatasourcesnapshot

解决方案


您的数据模型必须符合Hashableand Equatable,以便差异算法可以跟踪快照之间的变化。

如果两个对象之间存在冲突问题,或者您已经以允许两个对象看起来与差异算法相同的方式实现了这些协议中的任何一个,您将获得运行时断言异常。

我会准确追踪您的模型对象是如何继承或实现这些协议的。


推荐阅读