我在Core Data中提取了两种对象,一些女孩和一些男孩。每个都有一个大小和一个出生日期。
我想最多选择50个人,而不是超过10个女孩。 例如,如果我的数据库中有15个女孩和5个男孩,我希望tableView打印5个男孩和10个女孩(用他们的生日排序)。
我将男孩与女孩区别开来:性别。
你知道最好的方法是什么吗?
我可以限制总金额:
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
id <NSFetchedResultsSectionInfo> sectionInfo = [[myFetchedResultsController sections] objectAtIndex:section];
if ([sectionInfo numberOfObjects] > 50) {
return 50;
} else
{
return [sectionInfo numberOfObjects];
}
}
但是我无法限制UITableView中女孩的数量。
谢谢,Niels
答案 0 :(得分:0)
在您阅读coredata之后,我可以考虑创建一个数据源。 使用此伪代码逻辑将对象添加到数据源。用程序变量替换它应该很简单。
int num_of_girls = 0;
for(i=0;i<50 && data!=nil;i++)
{
// Fetch object from core data at index i
if(data==girl && num_of_girls <15)
{
// Add to data source the data pertaining to girl
num_of_girls++;
i++;
continue
}
// Add to data source as this is pertaining to boy
i++;
}
答案 1 :(得分:0)
有趣(我不会评论性别歧视)。
没有任何方法可以编写谓词来限制搜索的一半。假设数据库在表的呈现过程中没有太大变化,一种技术可能是先预先选择十个女孩,用瞬态属性includeGirl标记它们,然后寻找一个复合谓词Boy或includeGirl with a
[myBoysFetchedResultsController.fetchRequest setFetchLimit:50];