2011-05-21 50 views
1

在我的核心數據模型中,我有一個具有firstName和lastName屬性的person實體。當我使用帶有fetchedResultsController的排序描述符時,我按firstName排序。但是,如果firstName是零,我想使用lastName來代替。排序描述符中的函數

我也有個人和對象之間的關係,叫personOfObjects這裏的人< - >>對象。我正在整理出現在UITableView中。除第一個名字爲零的情況外,它工作正常。在這種情況下,他們都被分組到同一個組中,而這些特殊情況應該真正按姓氏排序。

這是我現在做的事:

NSEntityDescription * entity = [NSEntityDescription entityForName:@"object" inManagedObjectContext:dataInterface.managedObjectContext]; 

[fetchRequest setEntity:entity]; 

NSSortDescriptor *personSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"personOfObject.firstName" ascending:YES]; 
NSSortDescriptor *objectSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"objectDescription" ascending:YES]; 

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:personSortDescriptor, objectSortDescriptor, nil]; 

我想我可能會導致對人類的輔助功能,如:

- (NSString *) firstLast { 
    if (![self.firstName isNullString]) return self.firstName; 
    if (![self.lastName isNullString]) return self.lastName; 
    return @""; 
} 

,然後更改第一個排序描述符指到這個功能:

NSSortDescriptor *personSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"personOfObject.firstLast" ascending:YES]; 
NSSortDescriptor *objectSortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"objectDescription" ascending:YES]; 

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:personSortDescriptor, objectSortDescriptor, nil]; 

我沒有真正期望這工作(而且沒有),但我很想如果有直接的方法來做這樣的事情,那麼可以打電話。

回答