我正在运行以下代码,以最快结束的顺序对数组进行排序(最近的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/