У меня есть странный сбой, который начал происходить, который я не могу воспроизвести и в основном происходит в 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
Crash iOS - UICollectionViewDiffabledAtasource - Fatal: Поставляемые идентификаторы предметов не уникальны ⇐ IOS
Программируем под IOS
1739872306
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>
Подробнее здесь: [url]https://stackoverflow.com/questions/79447797/ios-crash-uicollectionviewdiffabledatasource-fatal-supplied-item-identifier[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия