在我的核心數據模型中,我有一個具有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];
我沒有真正期望這工作(而且沒有),但我很想如果有直接的方法來做這樣的事情,那麼可以打電話。
我在回覆之前一直試圖更好地理解這一點。我對NSComparator的解釋很困惑。在我評論這件事之前,可能需要一段時間。謝謝。 – Jim 2011-05-22 22:57:36