C# Xamarin:Objective-C向可观察集合添加对象时出现异常
在Xamarin表单上,我们正在基于XLabs autocomplete实现一个自定义的自动完成控件,在该控件中,我们清空一个可观察的对象集合,并使用与特定搜索项对应的对象再次填充它。然后,它应该在带有dataTemplate的listView中完美地呈现结果 我们开发的产品完全适用于Android,但在这种类型的iOS上会出现一个错误: 抛出Objut-C异常。名称:NSInternalInconsistencyException原因:无效更新:节0中的行数无效。更新(1)后现有节中包含的行数必须等于更新(1)前该节中包含的行数,加上或减去从该节中插入或删除的行数(1插入,0删除),加上或减去移入或移出该节的行数(0移入,0移出) 这是我们的代码:C# Xamarin:Objective-C向可观察集合添加对象时出现异常,c#,autocomplete,xamarin.forms,observablecollection,xlabs,C#,Autocomplete,Xamarin.forms,Observablecollection,Xlabs,在Xamarin表单上,我们正在基于XLabs autocomplete实现一个自定义的自动完成控件,在该控件中,我们清空一个可观察的对象集合,并使用与特定搜索项对应的对象再次填充它。然后,它应该在带有dataTemplate的listView中完美地呈现结果 我们开发的产品完全适用于Android,但在这种类型的iOS上会出现一个错误: 抛出Objut-C异常。名称:NSInternalInconsistencyException原因:无效更新:节0中的行数无效。更新(1)后现有节中包含的行数
control._availableSuggestions.Clear();
if ( filteredSuggestions.Count > 0 ) {
foreach ( var suggestion in filteredSuggestions )
{
control._availableSuggestions.Add(filteredSuggestions);
}
你知道问题的原因吗?有什么解决办法吗?非常感谢您的投入 对于Xamarin Forms 2.4的版本,我也面临同样的问题*
解决方案是恢复到Xamarin Forms 2.4之前的版本,如2.3.4.270,以避免出现此错误。如果您使用的是Xamarin.Forms 2.4*,并且不想降级,下面是解决方案
if (filteredSuggestions.Count > 0)
{
control._availableSuggestions = new ObservableCollection<object>(filteredSuggestions);
control._lstSuggestions.ItemsSource = control._availableSuggestions;
control.ShowHideListbox(true);
}
else
{
control.ShowHideListbox(false);
}
if(filteredSuggestions.Count>0)
{
控件。_availablesSuggestions=新的ObservableCollection(filteredSuggestions);
控制。_lstSuggestions.ItemsSource=控制。_可用建议;
控件。ShowHideListbox(true);
}
其他的
{
控件。ShowHideListbox(false);
}
在iOS中,当我们使用ObservaleCollection的Clear()和Add()函数处理ObservaleCollection时,它会抛出MonoTouchException异常。解决方法是
之后
清除()
ObservableCollection的方法调用
重新初始化集合
Result = new ObservableCollection<T>(GetNewList());
Result=newobserveCollection(GetNewList());
您有没有找到解决方案?我现在也面临同样的问题。谢谢