我有一个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;
答案 0 :(得分:0)
我猜错了逻辑,首先你必须检查所有文件是否有相同的日期,如果它们有相同的日期,那么只按名称排序,否则按日期排序。
答案 1 :(得分:0)
整数的字符串表示形式给出了未定义的行为,因此当您比较@"Image 1.pdf" < @"Image 2.pdf"
时,将会有未定义的行为。
你可以做的是先尝试将这个数字附加到“图像”,然后尝试对其进行排序。