嗨,我的核心数据中的表有类似的问题
+-----------------------+
|person |
+-----------------------+
|name |
|address |
|birthDate |
|gender |
+-----------------------+
在我的FetchedResultController中,我通过其性别Male
和Female
将其提取到两个部分。
问题是我希望Male
部分按其birthDate
排序并且仅限制5行,在Female
部分我希望按其name
和无限制排序。< / p>
我可以在One FetchedResultController中完成,或者我需要2个FetchedResultController。或者如果有其他方法可以让我知道。
由于
答案 0 :(得分:2)
如果您定义自己的排序方法,则可以使用一个NSFetchedResultController
执行此操作。它会是这样的:
- (NSString *) sortBy
{ return (Male == self.gender ? self.birthDate : self.name); }
然后在控制器的配置中提供sortBy
。请注意,正如@Martin R所指出的,您可能无法使用Objective-C方法进行排序;如果没有,则定义另一个属性'sortOrder'并在对象创建时计算它。
至于限制,不确定,但也许可以在tableView:numberOfRowsInSection:
中实现Apple给出了这个例子:
- (NSInteger) tableView: (UITableView *) table
numberOfRowsInSection: (NSInteger) section
{
id <NSFetchedResultsSectionInfo> sectionInfo =
[[<#Fetched results controller#> sections] objectAtIndex:section];
return [sectionInfo numberOfObjects];
}
当该部分是“男性”部分时,也许你可以返回'3'。