使用NSSortDescriptor对NSMutableArray iOS中的对象进行排序?

时间:2015-04-02 05:24:16

标签: ios nsmutablearray nssortdescriptor

我有一个NSMutableArray对象。我需要根据createdDate和name对它们进行排序。 以下是我面临的情景: 文件名是这样的: Image.pdf,Image 1.pdf,Image 2.pdf,Image 3.pdf,Image 4.pdf,Image 5.pdf ...

现在这些文件可以具有相同的createdDate,因此当createdDate相同时,它应按名称按降序排序。因此,如果上面的文件具有相同的创建日期,那么在排序后它应显示为: Image 5.pdf,Image 4.pdf,Image 3.pdf,Image 2.pdf,Image 1.pdf,Image.pdf但是当我使用下面的代码时Image.pdf混乱或显示如下:    Image.pdf,Image 5.pdf,Image 4.pdf,Image 3.pdf,Image 3.pdf,Image 1.pdf

NSSortDescriptor *sortDescriptor1 = [[NSSortDescriptor alloc] initWithKey:@"createdDate" ascending:NO selector:@selector(compare:)];
    NSSortDescriptor *sortDescriptor2 = [[NSSortDescriptor alloc] initWithKey:@"name" ascending:NO selector:@selector(localizedStandardCompare:)];
    NSArray *sortDescriptors = [NSArray arrayWithObjects:sortDescriptor1, sortDescriptor2, nil];
    return sortDescriptors;

2 个答案:

答案 0 :(得分:0)

我猜错了逻辑,首先你必须检查所有文件是否有相同的日期,如果它们有相同的日期,那么只按名称排序,否则按日期排序。

答案 1 :(得分:0)

整数的字符串表示形式给出了未定义的行为,因此当您比较@"Image 1.pdf" < @"Image 2.pdf"时,将会有未定义的行为。

你可以做的是先尝试将这个数字附加到“图像”,然后尝试对其进行排序。