Objective c NSSortComparator对NSMutableArray没有影响

Objective c NSSortComparator对NSMutableArray没有影响,objective-c,ios,uitableview,sorting,nsmutablearray,Objective C,Ios,Uitableview,Sorting,Nsmutablearray,我正在运行以下代码,以最快结束的顺序对数组进行排序(最接近[NSDate date](现在) 但是,每当我运行比较器时,它对数组没有任何影响,所有对象都保留其当前位置。请告诉我哪里出错了 [self.questions sortUsingComparator:^NSComparisonResult(NSDictionary * question1, NSDictionary *question2) { NSDate* dateq1 = [NSDate dateWithTimeInte

我正在运行以下代码,以最快结束的顺序对数组进行排序(最接近
[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
,反之亦然,但数组从未更改,即使返回值会更改。

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

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

Sort返回一个新数组;我认为它不会更改接收器。我无法判断您是否正在执行分配。

为什么您认为它不起作用?只需在排序前后记录数组-我认为您会看到它的更改。您是对的,我相信tableView重新加载有问题,而不是sor有问题ting.sortUsingComparator(在NSMutableArray上)不会返回新数组。SortDarrayusingComparator会返回新数组。感谢您的替代方法,但我有理由相信tableView没有更新,而不是排序过程不起作用。