1

著者の姓でテーブルをソートしようとしています。現在、データはコアデータの文字列として "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]; 

ありがとう!

答えて

関連する問題