NSSortComparator对NSMutableArray没有影响

时间:2012-08-14 15:34:39

标签: objective-c ios uitableview sorting nsmutablearray

我正在运行以下代码,以最快的结束顺序对我的数组进行排序(最近的expiry_date到[NSDate date](现在)。

但是,每当我运行比较器时,它对阵列都没有任何影响,并且所有对象都保持其当前位置。请你告诉我我哪里出错了?

[self.questions sortUsingComparator:^NSComparisonResult(NSDictionary * question1, NSDictionary *question2) {

     NSDate* dateq1 = [NSDate dateWithTimeIntervalSinceNow:[[question1 objectForKey:@"expiry_date"] floatValue]];
     NSDate * dateq2 = [NSDate dateWithTimeIntervalSinceNow:[[question2 objectForKey:@"expiry_date"] floatValue]];

     NSComparisonResult result = [dateq1 compare:dateq2];

     NSLog(@"%@", result == NSOrderedAscending ? @"ASC" : result == NSOrderedDescending ? @"DESC" : @"SAME");

     return result;

}];

NSLog()返回以下内容:

DESC
DESC
ASC

我已经尝试将比较转换为dateq2,而dateq1代替{{1}},反之亦然,但数组永远不会改变,即使返回值也是如此。

2 个答案:

答案 0 :(得分:1)

看起来它对我有用(根据你的输出判断),但是这可能更简洁,因此不容易出错?

NSArray* unsorted;
NSSortDescriptor* descriptor = [NSSortDescriptor sortDescriptorWithKey: @"expiry_date" ascending: NO];
self.questions = [unsorted sortedArrayUsingDescriptors: @[ descriptor ] ];

答案 1 :(得分:0)

Sort返回一个新数组;我认为这不会改变接收器。我不知道你是否在做作业。