我正在将我的收藏视图转换为新的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 ...why?我当前的snap包含itemToUpdate和我的模型数组...
我认为这是因为根据数据模型,snap.indexOfItemIdentifier(itemToUpdate)返回not found (NSNotFound)...but是不可能的。
你有什么提示吗?
发布于 2020-01-22 15:17:22
我在尝试重新加载已从快照中删除的项目时遇到了此问题。这将使您得到相同或类似的错误。确保数据模型和快照同步以避免此错误。
发布于 2020-01-17 23:23:21
您的数据模型必须符合Hashable和Equatable,以便差异算法可以跟踪快照之间的更改。
如果两个对象之间存在冲突问题,或者您已经以允许两个对象看起来与diffing算法相等的方式实现了这两个协议中的任何一个,您将得到一个运行时assert异常。
我会准确地跟踪您的模型对象是如何继承或实现这些协议的。
发布于 2019-12-07 22:00:30
你已经为你的模型实现了static func ==了吗?我在使用结构时遇到了类似的问题,在结构中,所有属性之间的相等性都会被计算出来。
https://stackoverflow.com/questions/59029833
复制相似问题