2013-05-03 26 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