人々のグループの中から「最も古い」と「最も重い」を見つけるために、コア データにクエリを実行しています。より大きなデータセットでは、これは通常機能します (重複一致の可能性が少ないため) が、最も古い人物が最も重い人物である可能性がある小さなデータセットでは、問題が発生します。
[John, 77, 160]
[Pete, 56, 155]
[Jane, 19, 130]
[Fred, 27, 159]
[Jill, 32, 128]
この情報を 2UITableViewCell
秒で表示したいのでUITableView
、最初に 2 を実行してこれを行っています (1 つはOLDESTNSFetchRequests
を検索し、2 番目は HEAVIEST を検索します)。をセットアップするために使用しています。objectID
NSFetchRequest
NSFetchedResultsController
// FETCH REQUEST - OLDEST, HEAVIEST
NSFetchRequest *fetchRequest = [NSFetchRequest fetchRequestWithEntityName:@"People"];
NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"age" ascending:YES];
[fetchRequest setSortDescriptors:[NSArray arrayWithObject:descriptor]];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF IN %@", IDArray];
[fetchRequest setPredicate:predicate];
ファイナルの「説明を出力」NSFetchRequest
すると、実際には managedObjects への 2 つのポインターが含まれています。
(i.e. [John, 77, 160] [John, 77, 160])
私の問題は、私がそうするときのようです
[[self fetchedResultsController] performFetch:nil];
デリゲートUITableView
メソッド:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
NSArray *sectionArray = [[self fetchedResultsController] sections];
id <NSFetchedResultsSectionInfo> sectionInfo = [sectionArray objectAtIndex:0];
NSUInteger numberOfRows = [sectionInfo numberOfObjects];
NSLog(@"ROWS: %u", numberOfRows);
return numberOfRows;
}
はnumberOfRows
を 1 としてのみ表示し、単一の [John, 77, 160] のみを my に表示しますUITableView
。