gpt4 book ai didi

objective-c - 分割获取的结果 Controller 中断搜索显示

转载 作者:可可西里 更新时间:2023-11-01 03:33:12 31 4
gpt4 key购买 nike

我完全被这个迷惑了,无法弄清楚我错过了什么。也许还有很多关于核心数据的知识需要学习。

这是我的 Fetched Results Controller,它显示了一个没有部分的表格,但我的搜索显示 Controller 可以工作:

self.fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:request
managedObjectContext:self.buckyballDatabase.managedObjectContext
sectionNameKeyPath:nil
cacheName:nil];

鉴于我应用 sectionNameKeyPath 后立即添加部分。添加了部分,但我的搜索显示 Controller 坏了,抛出以下错误:

*** Assertion failure in -[UITableViewRowData rectForRow:inSection:], /SourceCache/UIKit_Sim/UIKit-2372/UITableViewRowData.m:1630
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'request for rect at invalid index path (<NSIndexPath 0x7481040> 2 indexes [0, 1])'

这是我的 TableView 数据源实现 其中 filteredList 是一个 NSArray:-

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if (tableView == self.tableView)
{
return [[self.fetchedResultsController sections] count];
}
else
{
return 1;
}
}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
if (tableView == self.tableView)
{
return [[[self.fetchedResultsController sections] objectAtIndex:section] numberOfObjects];
}
else
{
return [self.filteredList count];
}
}


- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
if (tableView == self.tableView)
{
return [[[self.fetchedResultsController sections] objectAtIndex:section] name];
}
else
{
return nil;
}
}

- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index
{
if (tableView == self.tableView)
{
if (index > 0)
{
return [self.fetchedResultsController sectionForSectionIndexTitle:title atIndex:index-1];
}
else
{
self.tableView.contentOffset = CGPointZero;
return NSNotFound;
}
}
else
{
return 0;
}
}

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView
{
if (tableView == self.tableView)
{
NSMutableArray *index = [NSMutableArray arrayWithObject:UITableViewIndexSearch];
NSArray *initials = [self.fetchedResultsController sectionIndexTitles];
[index addObjectsFromArray:initials];
return index;
}
else
{
return nil;
}
}

cellForRowAtIndexPath 中以下行抛出异常:-

UITableViewCell *cell = [self.tableView dequeueReusableCellWithIdentifier:CellIdentifier
forIndexPath:indexPath];

请问是否需要提供更多信息..我在这个问题上挠头了..

最佳答案

尝试使用 -dequeueReusableCellWithIdentifier: 而不是 -dequeueReusableCellWithIdentifier:forIndexPath:。

关于objective-c - 分割获取的结果 Controller 中断搜索显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13427748/

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