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没有更新,而不是排序过程不起作用。