我已将此fetchedResultsController
添加到我的UIViewController
。我正在使用MagicalRecords。
这是我的代码:
- (NSFetchedResultsController *)fetchedResultsController {
if (_fetchedResultsController != nil) {
return _fetchedResultsController;
}
_fetchedResultsController = [Artist fetchAllGroupedBy:nil withPredicate:nil sortedBy:@"artist_id" ascending:NO delegate:self];
return _fetchedResultsController;
}
但是这段代码没有调用。
我的UITableView
中有UIViewController
。我想下面这个方法应该启动上面的方法,但它没有:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
id sectionInfo =
[[_fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo numberOfObjects];
}
所以目标是使用魔法记录和fetchedResultsController
获取数据。
我当然可以制作类似-findAll
的内容,但我认为fetchedResultsController将自动更新数据而不是-findAll
。
答案 0 :(得分:1)
你必须声明一个属性(如果你还没有):
@property(strong, nonatomic) NSFetchedResultsController *fetchedResultsController;
在视图控制器中然后通过属性访问器而不是实例变量访问它,例如
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
id sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
return [sectionInfo numberOfObjects];
}
self.fetchedResultsController
调用getter方法fetchedResultsController
,以便在第一次调用时创建FRC。
您还应该设置
_fetchedResultsController.delegate = self;
在getter方法中启用自动更改跟踪,并调用
[_fetchedResultsController performFetch:&error];
用于初始提取(除非MagicalRecord为您执行此操作)。