MagicalRecords 从 fetchedResultsController 获取数据

Posted

技术标签:

【中文标题】MagicalRecords 从 fetchedResultsController 获取数据【英文标题】:MagicalRecords fetch data from fetchedResultsController 【发布时间】:2013-11-07 08:19:12 【问题描述】:

我已将此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;

但是这段代码没有调用。

我的UIViewController 中有UITableView。我想下面的这个方法应该启动上面的方法,但它没有:

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

    id  sectionInfo =
    [[_fetchedResultsController sections] objectAtIndex:section];
    return [sectionInfo numberOfObjects];

所以目标是使用神奇的记录和fetchedResultsController 获取数据。

我当然可以制作类似 -findAll 的东西,但我认为 fetchedResultsController 会在数据到来时自动更新数据,而不是 -findAll

【问题讨论】:

【参考方案1】:

你必须声明一个属性(如果你还没有这样做的话):

@property(strong, nonatomic) NSFetchedResultsController *fetchedResultsController;

在视图控制器中, 然后通过 property accessor 而不是 instance variable 访问它,例如

- (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 为您这样做)。

【讨论】:

以上是关于MagicalRecords 从 fetchedResultsController 获取数据的主要内容,如果未能解决你的问题,请参考以下文章

MagicalRecords importFromArray 返回空数组

Magical Records:加载要在本地上下文中更新的记录

Magical Records - 如何使用关键路径映射关系?

我正在尝试从 Magical Records 获取最新添加的数据

IOS/XCODE:在其他类中调用 NSFetchedResultsController 方法

“下一张”和上一张图片的 UIButton 和操作