限制UITableView大小

时间:2011-07-25 14:40:28

标签: iphone ios uitableview nsfetchedresultscontroller

我在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

2 个答案:

答案 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];