Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Fatal: supplied identifiers are not unique.' 対処法
UICollectionViewDiffableDataSource
をつかっていた際にタイトルのエラーが発生したので、対処法をかるくメモ🔰
今回エラーが発生したのは、セクションの情報を追加するときの処理です。
var snapshot = dataSource.snapshot() snapshot.appendSections(newSections) newSections.forEach { switch $0 { case .largeItem(let item, _): snapshot.appendItems([item], toSection: $0) case .smallItems(let items, _): snapshot.appendItems(items, toSection: $0) } } dataSource.apply(snapshot, animatingDifferences: false)
結論
データをリフレッシュするのではなく、追加する時はsnapshot.appendSections(newSections)
で、差分のデータだけ含めるようにしましょう。DifferenceKit
とかの要領でデータを全て追加してしまっていたので、同じhashvalue
を持つデータがsnapshot
で重複してしまい今回のエラーが発生していました👀
ちなみに、リフレッシュする時はsnapshot.deleteAllItems()
してから、データ追加するとうまくいきます。
てな感じ本日も以上となります🍺