これはおそらくばかげているように見えますが、NSFetchedResultsControllerの制限をどのように設定しすぎているのか理解できません。fetchLimitを設定しても、すべてのレコードを取得します。制限を1に設定して、「フリーミアム」モードではオプションが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サービスと同期していることを追加することもできます。これで問題が発生するかどうかはわかりません。