Crash iOS - UICollectionViewDiffabledAtasource - Fatal: Поставляемые идентификаторы предметов не уникальныIOS

Программируем под IOS
Ответить
Anonymous
 Crash iOS - UICollectionViewDiffabledAtasource - Fatal: Поставляемые идентификаторы предметов не уникальны

Сообщение Anonymous »

У меня есть странный сбой, который начал происходить, который я не могу воспроизвести и в основном происходит в 10 -м поколении iPad. Модели контента для данных показаны ниже, и они соответствуют Hashable. Ранее я только что использовал автоматическое соответствие.struct FormationContent: Hashable {
let block: Block

func hash(into hasher: inout Hasher) {
hasher.combine(block)
}

enum Block: Hashable {
case formation(FormationCellViewModel)
case add(isSelected: Bool)

func hash(into hasher: inout Hasher) {
switch self {
case .formation(let viewModel):
hasher.combine("formation")
hasher.combine(viewModel.id)
case .add(let isSelected):
hasher.combine("add")
hasher.combine(isSelected)
}
}
}

struct FormationCellViewModel: Hashable {
let id: UUID
let title: String
let isSelected: Bool
}
}
< /code>
Ниже приведены журналы сбоя, которые, по -видимому, не показывают никакого дублирования. Как ни странно, раздел «Добавить» не появляется, но я думаю, что сбой происходит до того, как дат данных попытается отобразить это в следующем разделе: < /p>
Fatal: supplied item identifiers are not unique.
Duplicate identifiers:
{( footballformation.FormationContent(block: footballformation.FormationContent.Block.formation(footballformation.FormationContent.FormationCellViewModel(id: 65BF74DC-FC44-4E2E-8984-DD036543B0AD, title: "5-3-2", isSelected: false))),
footballformation.FormationContent(block: footballformation.FormationContent.Block.formation(footballformation.FormationContent.FormationCellViewModel(id: 2397B8DE-DD7C-4CED-B78D-5BDB30F0CB15, title: "4-5-1", isSelected: false))),
footballformation.FormationContent(block: footballformation.FormationContent.Block.formation(footballformation.FormationContent.FormationCellViewModel(id: F0CBB71C-B39B-4674-B950-F4CFF0FF8E72, title: "4-4-2", isSelected: false))),
footballformation.FormationContent(block: footballformation.FormationContent.Block.formation(footballformation.FormationContent.FormationCellViewModel(id: 71609229-BCC8-457F-977F-618335BC9E0B, title: "4-3-3", isSelected: false))),
footballformation.FormationContent(block: footballformation.FormationContent.Block.formation(footballformation.FormationContent.FormationCellViewModel(id: 5FA5DBE3-87A2-4CE4-9D19-2588CFE5DC28, title: "4-3-2-1", isSelected: false))),
footballformation.FormationContent(block: footballformation.FormationContent.Block.formation(footballformation.FormationContent.FormationCellViewModel(id: 631FD123-F4D9-43A2-BFA1-64F6A739B9C3, title: "3-5-2", isSelected: false))) )}
< /code>
Модель FormationContent предназначена для двух разделов, которые обрабатываются с различными блоками. Идентификатор формирования поступает из модели Coredata и является уникальным. < /P>
Вот как я применяю свой снимок: < /p>
private func applyFormationSnapshot(_ formationsContent: [FormationLayout.Section : [FormationContent]]) {
var snapshot = NSDiffableDataSourceSnapshot()
snapshot.appendSections([.main, .add])
if let formations = formationsContent[.main] {
snapshot.appendItems(formations, toSection: .main)
}
if let addFormation = formationsContent[.add] {
snapshot.appendItems(addFormation, toSection: .add)
}
formationsDataSource.apply(snapshot, animatingDifferences: true)
}
< /code>
Есть ли что -то очевидное, что я делаю неправильно? p>
Спасибо < /p>

Подробнее здесь: https://stackoverflow.com/questions/794 ... identifier
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»