0

我有一个数据列表,我可以通过单击列标题对其进行排序。唯一的问题是它显示如下:

10A
11A
12A
1A
2A
3A

etc...

理想情况下,我希望它的排序如下:

1A
2A
3A
4A
5A
6A
7A
8A
9A
10A
11A

etc...

有没有办法绕过这个默认的排序操作?

这些是我的排序描述符属性:

排序描述符属性

@Monolo:

在此处输入图像描述

    self.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"self"
                                                       ascending:YES
                                                      comparator:^NSComparisonResult(id obj1, id obj2) {
                                                          NSLog(@"COMPARATOR!");
                                                          return [obj1 compare:obj2
                                                                       options:NSNumericSearch];
                                                      }]];
4

1 回答 1

0

通常,您要查找的排序类型可以通过 的compare:options:方法获得NSString,因此,如果您在代码中构造排序描述符并将它们放入数组控制器(以编程方式或通过从 ni​​b 文件绑定),您应该得到什么你正在寻找。

设置一个排序描述符数组,例如这样:

// AppDelegate.h:

@property (strong) NSArray *sortDescriptors;


//AppDelegate.m:

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
    self.sortDescriptors = @[[NSSortDescriptor sortDescriptorWithKey:@"self"
                                                ascending:YES
                                               comparator:^NSComparisonResult(id obj1, id obj2) {
                                                   return [obj1 compare:obj2
                                                                options:NSNumericSearch];
                                               }]];
}

因此,与其绑定到标准用户默认控制器,不如绑定到您的 App Delegate(或您更喜欢保存这些帮助对象的其他对象),然后您将获得您所追求的行为。绑定的模型键路径sortDescriptors使用上面的代码片段。

于 2013-02-13T11:54:34.523 回答