我正在尝试对在UITableView中显示的数据进行数字排序。
在此之前我使用了这样的排序描述符:
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];
现在我想用块来对数字进行排序:
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
return [((NSString *)obj1) compare:(NSString *)obj2 options:NSCaseInsensitiveSearch | NSNumericSearch];
}];
但是它会对NSFetchedResultsController中与节名称冲突造成冲突的数据进行排序。所以我试着用比较器块模仿旧的排序 - 只是为了确保问题不是由数字比较引起的。问题是那些线:
sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
return [((NSString *)obj1) caseInsensitiveCompare:(NSString *)obj2];
}];
也会导致同样的错误,我不明白为什么他们不会像第一种方法那样对数据进行排序...
有什么想法吗?
答案 0 :(得分:1)
我不知道这是否适用于抓取请求,但您可以尝试按@selector(localizedStandardCompare:)
排序。