0

我已将此添加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.

4

1 回答 1

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 为您执行此操作)。

于 2013-11-07T08:26:15.090 回答