我正在运行以下代码,以最快的结束顺序对我的数组进行排序(最近的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}},反之亦然,但数组永远不会改变,即使返回值也是如此。
答案 0 :(得分:1)
看起来它对我有用(根据你的输出判断),但是这可能更简洁,因此不容易出错?
NSArray* unsorted;
NSSortDescriptor* descriptor = [NSSortDescriptor sortDescriptorWithKey: @"expiry_date" ascending: NO];
self.questions = [unsorted sortedArrayUsingDescriptors: @[ descriptor ] ];
答案 1 :(得分:0)
Sort返回一个新数组;我认为这不会改变接收器。我不知道你是否在做作业。