在UITableView中限制NSFetchedResultsController的结果

时间:2013-03-25 19:43:26

标签: core-data uitableview nsfetchedresultscontroller nsfetchrequest

这可能看起来很傻,但我无法弄清楚如何设置NSFetchedResultsController的限制。即使在设置fetchLimit时,我仍然可以获得所有记录。我想将限制设置为1,以便在“免费增值”模式下只有一个选项,但是当应用程序解锁时,您将获得完整的表格

NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"Poem"];
fetchRequest.returnsObjectsAsFaults = NO;
fetchRequest.resultType = NSManagedObjectResultType;
fetchRequest.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"createdAt" ascending:NO selector:nil]];
fetchRequest.fetchLimit = 1;
// setup my predicate
_fetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:kDataContext sectionNameKeyPath:nil cacheName:nil];
_fetchedResultsController.delegate = self;

我还有一种获取数据的方法。此方法旨在在加载时以及当用户解锁应用程序的完整版本时运行。

- (void)refetchData {
    NSError *error = nil;
    [_fetchedResultsController performFetch:&error];
    // handle error

    [self.documentsTable reloadData];
}

我已经尝试将UITableView numberOfRowsInSection设置为返回1,但随后我收到警告日志。另外,我觉得这是作弊。我想保持应用数据驱动。

编辑: 我还可以补充一点,我正在使用AFIncrementalStore将我的数据与Web服务同步。我不确定这是否会导致任何问题。

2 个答案:

答案 0 :(得分:0)

很奇怪fetchLimit在这里不起作用。你可以尝试将fetchBatchSize设置为1并设置fetchLimit,这应该可以工作。

答案 1 :(得分:0)

如果需要,我最终硬编码-numberOfRowsInSection以返回1。它仍然取而代之,真的不知道我能做些什么。