Xcode UIsearchBar显示结果,但当我按下某个不存在的按钮时,应用程序会崩溃

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

我试图从一些教程中了解发生了什么,但不幸的是,我没有找到答案。 我想问题可能是我没有IF,以防我在搜索结果中得到零

错误是: “NSRangeException”,原因:“*-[\uu NSArrayM objectAtIndex:]:索引0超出空数组的界限”

我使用这种方法:

- (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)
检查数组是否为空。