我正在尝试实现一个searchResultsTableView,它将根据用户的搜索重新加载表。在numberOfRowsInSection函数(据我所知,该函数引发了异常)中,我具有以下内容:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    if (tableView == self.tableView) {
        return self.objects.count;
    } else {
        NSLog(@"The count of self.searchresults is %i", self.searchResults.count); //Shows as non-zero
        return self.searchResults.count;
    }

}


我感到困惑的是,我在return语句之前设置了一个断点,并且我知道根据NSLog我得到的非零结果。返回非零数字后,立即引发异常,并且得到异常“索引0超出空数组的界限”

我究竟做错了什么?

我还确保仅手动重新加载表,因此在shouldReloadTableForSearchString中,我具有以下方法:

- (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {

    if (searchString.length > 3){
        [self.searchResults removeAllObjects];

        PFQuery *query = [PFUser query];
        [query whereKey:@"username" containsString:searchString];

        [query findObjectsInBackgroundWithBlock:^(NSArray *objects, NSError *error) {
            if (error){
                NSLog(@"There is an error");
            } else {
                [self.searchResults addObjectsFromArray:objects];
                NSLog(@"self.resultResults count %i", self.searchResults.count);
                NSLog(@"The objects are %@", self.searchResults);
                [self.searchDisplayController.searchResultsTableView reloadData];
            }
        }];

    }
    return NO;
}


谢谢!

最佳答案

看来您的应用没有崩溃

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section


检查您在哪里调用objectAtIndex:方法,并查看是否对无效索引进行了调用。

关于ios - 非空数组超出范围错误-怎么回事?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21422809/

10-10 01:36