首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSFetchedResultsController (和UITableView)委托方法调用增长和增长

NSFetchedResultsController (和UITableView)委托方法调用增长和增长
EN

Stack Overflow用户
提问于 2015-09-08 18:03:01
回答 1查看 298关注 0票数 5

安装: UITableView与FRC。行是简单的文本内容列表,用户可以拉来刷新以获得最新的内容。

我看到了奇怪的行为,每一行都要调用cellForRow,多次调用。所以我看到了0, 0 ,1,0,2,0,3 (可见行),但是这4行都有多次调用cellForRow。但是当你第一次看到这个列表的时候,他们就被叫做一次。第二次,两次等等,在第七次,在用户看到内容之后,在幕后,它继续尝试一次又一次地配置单元,最终崩溃。

因此,如果你进入任何内容列表,它会点击服务器,下载故事,创建NSMOs并显示。在日志中,我看到为每个可见行调用一次configureCell。如果我刷新,我会看到同样的。但是,如果我导航到不同的屏幕,那么回来,当我拉刷新时,我注意到每一行都要调用两次cellforrow。如果我继续这个离开和回来的过程,每次我这样做,细胞福罗就被称为额外的时间。记录一些获取的结果控制器委托方法,在每一组cellforrow调用之前,我看到将发生变化。有人能帮我确定为什么我的细胞福罗方法被称为越来越多的次数吗?

一个想法是我建立FRC的方式。我遵循像CoreDataBooks这样的代码,把东西移到视图加载,但仍然看到问题。

我在.h中有一个属性,在.m中有一个我认为是标准设置的属性:

代码语言:javascript
复制
- (NSFetchedResultsController *)fetchedResultsController
{
//NSLog(@"fetchedresulscontroller");
if (_fetchedResultsController != nil)
{
    return _fetchedResultsController;
}

// initialize fetch request. setup predicate, sort, etc.

NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"date" cacheName:nil];

aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;

// perform actual fetch. delegate methods take it from here
NSError *fetchError = nil;
if (![self.fetchedResultsController performFetch:&fetchError])
{
    // Replace this implementation with code to handle the error appropriately.
    // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development.
    NSLog(@"Unresolved error %@, %@", fetchError, [fetchError userInfo]);
    abort();
}

return _fetchedResultsController;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-11 18:49:29

建筑工人走在正确的轨道上。这一切都与FRC有关,但诀窍是用于菜单的第三方SWReveal库。结果,每次我都在创建一个新的VC (以前的VC并没有被释放),FRC正在查看所有的实时视图控制器。因此,每次我从菜单中点击一个选项时,都会添加另一个选项,并为此调用配置调用。

解决方案是在视图中取消FRC委托,并将其设置为viewwillappear。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32464377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档