objective-c - 使用 NSFetchedResultsController 的 NSSortDescriptor 进行数字排序

标签 objective-c ios sorting nssortdescriptor

我正在尝试对 UITableView 中显示的数据进行数字排序。

之前我使用过这样的排序描述符:

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES selector:@selector(caseInsensitiveCompare:)];

现在我想使用 block 来按数字排序,如下所示:

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
    return [((NSString *)obj1) compare:(NSString *)obj2 options:NSCaseInsensitiveSearch | NSNumericSearch];
}];

但它对数据的排序不正确,导致与 NSFetchedResultsController 中的节名称发生冲突。因此,我尝试使用比较器 block 来模仿旧的排序 - 只是为了确保问题不是由数字比较引起的。问题是这些行:

sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:YES comparator:^NSComparisonResult(id obj1, id obj2) {
    return [((NSString *)obj1) caseInsensitiveCompare:(NSString *)obj2];
}];

也会导致同样的错误,我不明白为什么他们不会像第一个方法那样对数据进行排序...

有什么想法吗?

最佳答案

我不知道这是否适用于获取请求,但您可以尝试按 @selector(localizedStandardCompare:) 排序

关于objective-c - 使用 NSFetchedResultsController 的 NSSortDescriptor 进行数字排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4690875/

相关文章:

iphone - 以编程方式打开照片应用程序

java - 2D Array(Double) 排序给出 0 个值

c++ - 为什么我的排序方法不起作用?

Java冒泡排序错误输出

objective-c - AutoreleasePool 没有捕获断点,没有警告,Instruments Leaks 中没有报告

ios - 在 Objective-C 中将 NSString 转换为 char 后,最后是否有 '\0'?

objective-c - 尝试将 NSString 解析为 NSDate 时出错

ios - 自定义/更改 UISearchController 搜索栏、背景和范围栏的颜色

ios - 如果用户已经使用 facebook 登录,则使用 swift 调用 segue

javascript - iOS 中的 MultiMarkdown 到 HTML