我正在查询核心数据以在一群人中找到“最旧”和“最重”。对于较大的数据集,这通常有效(因为重复匹配的机会较小),但对于一个小数据集,其中最老的人也可能是最重的我遇到问题。
[John, 77, 160]
[Pete, 56, 155]
[Jane, 19, 130]
[Fred, 27, 159]
[Jill, 32, 128]
因为我想在 2UITableViewCell
秒内显示此信息,所以UITableView
我首先运行 2 NSFetchRequests
(一个找到最旧的,第二个找到最重的)我是他们objectID
为每个托管对象获取 s 并将它们添加到最终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
它确实包含 2 个指向 managedObjects 的指针。
(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;
}
仅显示为 1 并且仅在 my中numberOfRows
显示单个 [John, 77, 160]UITableView