Xamarin.Forms Observablecollection在ios设备上引发异常

问题描述 投票:0回答:1

在视图模型中,我有一个observablecollection,它将在构造函数中创建。在该方法中,我调用RefreshCommand,它执行以下步骤:

  • 清除现有列表(Items.Clear())
  • 调用网络服务以接收新项目(异步)
  • 使用foreach将所有新Itms添加到列表中

此项目将显示在ListView中,并且非常适用于Android(模拟器和真实设备)以及iOS Simulator,但是一旦我将其部署到真实的iOS设备(在本例中为iPhone 6)上,该应用崩溃..

这里是例外的一部分:

“引发Object-C异常。名称:NSInternalInconsistencyException原因:无效的更新:区域0中的项目数无效。更新(1)之后现有区域中包含的项目数必须等于该区域中包含的项目数。更新前的那个部分(1),加上或减去从该部分中插入或删除的项目数(插入1,删除0)和加上或减去移入或移出该部分的项目数(移入0,移入0)移出)。“

我已经尝试过在GUIThread中移动clear和fill动作,并且还尝试了使用线程安全集合:https://codetraveler.io/2019/09/11/using-observablecollection-in-a-multi-threaded-xamarin-forms-application/

但是应用程序一次又一次崩溃。对我有用的解决方法是将observablecollection更改为普通列表...

任何想法为何只能在真实设备上发生?

ios xamarin xamarin.forms observablecollection
1个回答
0
投票

我有类似的错误,为我解决的问题是将新的ObservableCollection重新分配给绑定变量,而不是一一清除并添加它们。因此,基本上,我创建了要在observableCollection中使用的项目的列表,然后将其分配为:

boundVar = new ObservableCollection(list);
© www.soinside.com 2019 - 2024. All rights reserved.