Xcode UIsearchBar显示结果,但当我按下某个不存在的按钮时,应用程序会崩溃
我试图从一些教程中了解发生了什么,但不幸的是,我没有找到答案。 我想问题可能是我没有IF,以防我在搜索结果中得到零 错误是: “NSRangeException”,原因:“*-[\uu NSArrayM objectAtIndex:]:索引0超出空数组的界限” 我使用这种方法:Xcode UIsearchBar显示结果,但当我按下某个不存在的按钮时,应用程序会崩溃,xcode,core-data,storyboard,uisearchbar,Xcode,Core Data,Storyboard,Uisearchbar,我试图从一些教程中了解发生了什么,但不幸的是,我没有找到答案。 我想问题可能是我没有IF,以防我在搜索结果中得到零 错误是: “NSRangeException”,原因:“*-[\uu NSArrayM objectAtIndex:]:索引0超出空数组的界限” 我使用这种方法: - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope { //removes previos search
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
//removes previos search result
[[self searchResults]removeAllObjects];
for (Books *book in [self.fetchResultsController fetchedObjects])
{
if([self searchResults] != nil)
{
NSComparisonResult result = [book.title compare:searchText
options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)
range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame )
{
[self.searchResults addObject:book];
}
}
}
}
也可以在git上找到我的完整项目:
编辑:
当我试着把我喜欢的这个
if([scope IseQualtString:@“All”]| |[book.title IseQualtString:scope])
应用程序崩溃了,不让我按任何东西 在从数组中删除所有对象之前,您可能需要检查数组是否包含对象
if(dataSourceArray){ //use your datasource array instead
[[self searchResults]removeAllObjects];
}
问题是,对于搜索结果表,
numberOfSectionsInTableView
始终返回1
,即使没有搜索结果。碰撞发生在标题ForHeaderin部分:
return [[[self searchResults] objectAtIndex:section] author];
因为索引0处的对象是从空数组访问的
因此,如果搜索结果数组为空,您可以更改numberOfSectionsInTableView
以返回0
,或者更改titleForHeaderInSection
以返回搜索结果表的不同内容。再次感谢:)在numberOfSectionsInTableView中,我尝试以下操作:如果([自搜索结果])返回1;否则返回0;在标题ForHeaderin部分中,我尝试了以下方法:if((tableView==[[self-searchDisplayController]searchResultsTableView])&&[self-searchResults]),但它不起作用。如何检查数组是否为空?正如你们所知,我是obj c的新手。@Dennis:使用if([[self searchResults]count]==0)
检查数组是否为空。