2013-05-03 39 views
1

嗨,我通过它的性别MaleFemale有我取成两个部分这是我的核心数据表类似像这样NSFetchedResultController多种限制和排序

+-----------------------+ 
|person     | 
+-----------------------+ 
|name     | 
|address    | 
|birthDate    | 
|gender     | 
+-----------------------+ 

在我FetchedResultController问题。 而问题是我想Male部分排序其birthDate和限制只有5行,在Female部分我想要它的排序它的name和无限制。

我可以做一个FetchedResultController或我需要2 FetchedResultController。或者如果有另一种方法可以让我知道。

感谢

+1

请显示您的代码!!! – 2013-05-03 04:52:05

回答

2

你可以用一个NSFetchedResultController做,如果你定义自己的排序方法。它会是这样的:

- (NSString *) sortBy 
{ return (Male == self.gender ? self.birthDate : self.name); } 

然后在控制器的配置中提供sortBy。请注意,正如@Martin R所述,您可能无法使用Objective-C方法进行排序;如果不是,则定义另一个属性'sortOrder'并在创建对象时计算它。

至于极限,不知道,但也许它可以在tableView:numberOfRowsInSection:苹果实现给出了这样的例子:

- (NSInteger) tableView: (UITableView *) table 
    numberOfRowsInSection: (NSInteger) section 
{ 
    id <NSFetchedResultsSectionInfo> sectionInfo = 
     [[<#Fetched results controller#> sections] objectAtIndex:section]; 
    return [sectionInfo numberOfObjects]; 
} 

也许你可以返回“3”时的区间为“男”部分。

+0

对于基于(基于SQLite的)核心数据读取请求中的排序描述符,您只能使用*持久属性*。基于Objective-C的排序方法不起作用。 – 2013-05-03 05:38:44

+0

谢谢你回答我的问题,但我怎么能限制'男'只有3行,但在'女'没有限制。谢谢。 – 2013-05-03 05:46:58

+0

查看修改。我写了@马丁R的评论,并提供了一个方法来限制'3'的限制。 – GoZoner 2013-05-03 14:09:33