Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Xamarin:Objective-C向可观察集合添加对象时出现异常_C#_Autocomplete_Xamarin.forms_Observablecollection_Xlabs - Fatal编程技术网

C# Xamarin:Objective-C向可观察集合添加对象时出现异常

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)后现有节中包含的行数

在Xamarin表单上,我们正在基于XLabs autocomplete实现一个自定义的自动完成控件,在该控件中,我们清空一个可观察的对象集合,并使用与特定搜索项对应的对象再次填充它。然后,它应该在带有dataTemplate的listView中完美地呈现结果

我们开发的产品完全适用于Android,但在这种类型的iOS上会出现一个错误: 抛出Objut-C异常。名称:NSInternalInconsistencyException原因:无效更新:节0中的行数无效。更新(1)后现有节中包含的行数必须等于更新(1)前该节中包含的行数,加上或减去从该节中插入或删除的行数(1插入,0删除),加上或减去移入或移出该节的行数(0移入,0移出)

这是我们的代码:

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());

您有没有找到解决方案?我现在也面临同样的问题。谢谢