这可能看起来很愚蠢,但我无法弄清楚如何设置 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 服务同步。我不确定这是否会导致任何问题。