NSDictionary *dict1 = @{@"CreateTime":@"2015/12/3 10:03:32"};
NSDictionary *dict2 = @{@"CreateTime":@"2015/12/3 10:02:53"};
NSDictionary *dict3 = @{@"CreateTime":@"2015/12/3 9:59:31"};
NSDictionary *dict4 =@{@"CreateTime":@"2015/12/3 9:58:06"};
NSArray *arrTest = @[dict1,dict2,dict3,dict4];
NSSortDescriptor *descriptor = [NSSortDescriptorsortDescriptorWithKey:@"CreateTime"ascending:YES];
arrTest = [arrTest sortedArrayUsingDescriptors:@[descriptor]];
排序后的结果不正确
{
CreateTime = "2015/12/3 10:02:53";
},
{
CreateTime = "2015/12/3 10:03:32";
},
{
CreateTime = "2015/12/3 9:58:06";
},
{
CreateTime = "2015/12/3 9:59:31";
}
如果把dict3,dict4的时间改成
NSDictionary *dict3 = @{@"CreateTime":@"2015/12/3 09:59:31"};
NSDictionary *dict4 = @{@"CreateTime":@"2015/12/3 09:58:06"};
则排序结果正确。
所有用 sortedArrayUsingDescriptors 进行时间排序的时候一定要注意“时间”部分的格式是否一致。
或者使用
arrTest = [arrTest sortedArrayUsingComparator:^NSComparisonResult(id _Nonnull obj1, id _Nonnull obj2) {
NSString *strTime1 = obj1[@"CreateTime"];
NSString *strTime2 = obj2[@"CreateTime"];
NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"YYYY/MM/DD HH:mm:ss"];
NSDate *date1 = [formatter dateFromString:strTime1];
NSDate *date2 = [formatter dateFromString:strTime2];
return [date1 compare:date2];
}];