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

最佳答案

看起来对我有用(根据您的输出判断),但这也许更简洁,因此出错的可能性更低?

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

关于objective-c - NSSortComparator对NSMutableArray没有影响,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11955854/

10-09 02:16