【发布时间】:2012-03-20 19:55:20
【问题描述】:
我正在尝试按作者的姓氏对表格进行排序。目前,数据在核心数据中以字符串形式保存为“FirstName LastName”。
我知道核心数据中的自定义选择器超出了 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];
谢谢!
【问题讨论】:
标签: iphone nsfetchedresultscontroller objective-c-blocks nssortdescriptor