gpt4 book ai didi

ios - 使用 UISearch 出现错误 : index 0 beyond bounds for empty array

转载 作者:行者123 更新时间:2023-11-28 18:32:54 24 4
gpt4 key购买 nike

我正在尝试在我的应用程序中配置我的搜索栏。我有一个包含 NSObject 实例的数组,并尝试使用搜索选项来查找(这个 NSObjects 的)合适的属性。其实,我可以找到它。我的问题是,我只能在 UISearch 字段中输入正确的字母。当我尝试键入字母时,我的 NSObject 类的“名称”属性不包含,我得到一个错误:空数组的索引 0 超出范围。我完全理解发生了什么——数组是空的,我试图从空数组中取出一些东西。但是我已经检查过,如果我的数组是空的,那么为什么它的错误仍然发生?请看一下代码:

- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
self.searchResults = [NSArray new];
NSPredicate *resultPredicate = [NSPredicate predicateWithFormat:@"name contains[c] %@", searchText];
self.searchResults = [self.placeOfObjects filteredArrayUsingPredicate:resultPredicate];
if ([self.searchResults objectAtIndex:0] != nil){
_filteredName = ((placeHolder *)(self.searchResults[0])).name;
}
NSLog(@"name is %@", _filteredName );
}

self.placeOfObjects 是一个包含 NSObject 类“place”实例的数组。它有几个属性,名字就是其中之一。它只包含文本。我怎样才能在不出错的情况下实现搜索?为什么当我输入 ([self.searchResults objectAtIndex:0] != nil) 时它仍然尝试在空数组中搜索?

如有任何建议,我们将不胜感激!

最佳答案

您为什么不先尝试检查数组计数。如果 count 大于 0,那么你可以去从中获取一些东西,否则你可以离开它。尝试这样的事情:

if(!(yourMainArray.count==0))
{
NSArray *subArray= [yourMainArrayobjectAtIndex:0];
}
else
{
//Show some alert regarding empty data !
}

您的 placeOfObjects 将是您的 mainArray。之后,您将从中填充您的 SearchResults 数组。因此,检查 placeOfObjects Count 的计数,如果它的计数 > 0,则只填充另一个数组。

希望这对您有所帮助。

关于ios - 使用 UISearch 出现错误 : index 0 beyond bounds for empty array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24504294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com