著者の姓でテーブルをソートしようとしています。現在、データはコアデータの文字列として "FirstName LastName"として保存されています。コアデータ - NSSortDescriptorのブロックを使用してTableViewをソートすることは可能ですか?
私は、コアデータのカスタムセレクタがCocoaの範囲外で、'NSInvalidArgumentException', reason: 'unsupported NSSortDescriptor selector: compareToLastName:'
を返すことを理解しています。コンパレータも同様に使用できますか?
コンパレータを完全に無視するようになっているのです
// Sort the request
NSSortDescriptor *sortByType;
if ([sort isEqualToString:@"author"]) {
NSComparator comparisonBlock = ^(id obj1,id obj2) {
NSString *obj1B = [[(NSString *)obj1 componentsSeparatedByString:@" "] lastObject];
NSString *obj2B = [[(NSString *)obj2 componentsSeparatedByString:@" "] lastObject];
return (NSComparisonResult) [obj1B compare: obj2B];
};
sortByType = [[NSSortDescriptor alloc] initWithKey:sort ascending:YES comparator:comparisonBlock];
}
else {
sortByType = [[NSSortDescriptor alloc] initWithKey:sort ascending:YES];
}
NSSortDescriptor *secondSort = [[NSSortDescriptor alloc] initWithKey:@"title" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObjects:sortByType, secondSort, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
ありがとう!