2011-10-23 66 views
2

我正在呈現一個託管對象的列表,其中每個託管對象都有一個timeStamp屬性。我想使用timeStamp屬性按時間順序對列表進行排序,我使用的是NSSortDescriptor。但我也想基於第二差異是太多了部分基於全日期產生部分(每天一個部分)如何使用NSFetchedResultsController在日期之後生成部分

下面會給我一個部分:

NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"timeStamp" cacheName:@"PatientDetailViewCache"]; 

是否有一個從格式化爲yy-MM-dd的NSFetchedResultsController的timeStamp屬性生成節的方法?

感謝所有幫助

基督教

回答

2

最簡單的方法是在你的子類NSManagedObject用於格式化的日期創建一個屬性和排序使用該屬性。對於類似的問題,SO上有很多問題。

Setting UITableView headers from NSFetchedResultsController

A NSFetchedResultsController with date as sectionNameKeyPath

但創造的awakeFromFetch:像這樣一類廣泛NSDateFormater:

-(void)awakeFromFetch{ 
    dateFormater = [[NSDateFormatter alloc] init]; 
    [dateFormater setDateFormat:@"yy-MM-dd"]; 
    [super awakeFromFetch]; 
} 

然後在訪問該類物業做這樣的事情:

-(NSString*)myprop{ 
    if(myprop==nil){ 
     myprop = [dateFormat stringFromDate:self.OTHERDATE]; 
    } 
    return myprop; 
} 

然後你的結果控制器是:

NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:self.managedObjectContext sectionNameKeyPath:@"myprop" cacheName:@"PatientDetailViewCache"]; 

然後它會返回格式化的日期並根據它進行排序。

+0

感謝您的快速回答。玩了一下,我猜想類似的方法是創建一個NSString屬性,並設置格式化日期。這樣我就不必創建一個子類。非常感謝您的幫助和鏈接。 –

相關問題