1

这可能看起来很愚蠢,但我无法弄清楚如何设置NSFetchedResultsController的限制。即使在设置fetchLimit时,我仍然可以获取所有记录。我想将限制设置为1,以便在“免费增值”模式,只有一个选择,但是当应用程序被解锁你的全表在UITableView中限制NSFetchedResultsController的结果

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服务同步。我不确定这是否会导致任何问题。

+1

问题(我认为)是提取请求仅用于初始提取,但不用于FRC的更改跟踪。 – 2013-03-26 03:33:52

回答

0

我结束了硬编码的-numberOfRowsInSection返回1,如果需要的话。它仍然提取一切,真的不知道我能做些什么。

0

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

+0

欣赏答案,但这并没有结束工作。 – rnystrom 2013-03-26 02:43:00

+0

真的很奇怪。我认为你应该考虑使用免费的Sensible TableView框架。它具有这种最大限度的对象限制,并且可以从核心数据实体自动生成所有UI和细节视图。 – Matt 2013-03-26 03:15:03