1

これはおそらくばかげているように見えますが、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サービスと同期していることを追加することもできます。これで問題が発生するかどうかはわかりません。

4

2 に答える 2

0

ここでfetchLimitが機能していないのは不思議です。fetchBatchSizeを1に設定すると同時に、fetchLimitを設定してみてください。これは機能するはずです。

于 2013-03-25T20:55:26.610 に答える
0

必要に応じて1を返すように-numberOfRowsInSectionをハードコーディングすることになりました。それでもすべてをフェッチしますが、それについて何ができるかは本当にわかりません。

于 2013-03-31T14:48:39.420 に答える