В модели представления у меня есть наблюдаемая коллекция, которая будет создана в конструкторе. В этом методе я вызываю команду RefreshCommand, которая выполняет следующие шаги:
- Очищает существующий список (Items.Clear ())
- Вызывает веб-службу для получения новых элементов (асинхронно)
- использует foreach для добавления всех новых Itms в список
Эти элементы будут отображаться в ListView, и это прекрасно работает для Android (симулятор и реальное устройство), а также для iOS Simulator, но как только я разверну его на реальном устройстве iOS (в данном случае на iPhone 6), приложение вылетает.
Вот часть исключения:
"Objective-CВозникло исключение. Имя: NSInternalInconsistencyException Причина: недопустимое обновление: недопустимое количество элементов в разделе 0. Количество элементов, содержащихся в существующем разделе после обновления (1), должно быть равно количеству элементов, содержащихся в этом разделе до обновления (1) плюс или минус количество элементов, вставленных или удаленных из этого раздела (1 вставлено, 0 удалено) и плюс или минус количество элементов, перемещенных в или изэтого раздела (0 переехал, 0 переехал). "
Я уже пытался переместить действие очистки и заполнения в GUIThread, и я также попробовал его с потокобезопасной коллекцией: https://codetraveler.io/2019/09/11/using-observablecollection-in-a-multi-threaded-xamarin-forms-application/
, но приложение снова и снова падает. Обходной путь, который работает для меня, состоит в том, чтобы изменить наблюдаемую коллекцию на обычный список ...
Есть идеи, почему это происходит только на реальном устройстве?