【发布时间】:2020-04-08 20:05:56
【问题描述】:
我想根据日期参数对以下数组进行排序,但问题出在服务器上,我没有得到timestamp,我得到的日期是string,谁能帮忙。
NSArray *array = @[
@{@"valid":@"Y",@"mof":@"ON",@"dof":@"17-05-2019",@"rtntype":@"CODE1",@"ret_prd":@"042019"},
@{@"valid":@"Y",@"mof":@"ON",@"dof":@"19-04-2019",@"rtntype":@"CODE1",@"ret_prd":@"032019"},
@{@"valid":@"Y",@"mof":@"ON",@"dof":@"19-04-2019",@"rtntype":@"CODE2",@"ret_prd":@"032019"}
];
我已尝试应用该解决方案,但它不起作用,因为我们拥有的日期位于 NSString 而不是 NSDate 或 NSTimeInterval
[array sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) {
if ([obj1 intValue] == [obj2 doubleValue])
return NSOrderedSame;
else if ([obj1 intValue] < [obj2 doubleValue])
return NSOrderedAscending;
else
return NSOrderedDescending;
}];
【问题讨论】:
-
首先使用
NSDateFormatter将NSString转换为NSDate,然后进行比较。另外,根据array,您的sortedArrayUsingComparator将不起作用,应该崩溃,不是吗?你不应该比较obj1[@"dof"]和obj2[@"dof"]吗? -
将日期字符串
day-month-year更改为day.month.year(如版本字符串)并使用此方法 developer.apple.com/documentation/foundation/nsstring/… 。在选项中通过NSNumericSearch -
@BlindNinja 基本上,无论日期是用连字符还是句点分隔,API 都可以工作。但是,无论如何都无法可靠地对这种特定的日期格式进行排序。
-
@SomePerson 你负责服务器端吗?如果是,请将日期格式更改为
yyyy-MM-dd。除非您按照第一条评论中的建议将其转换为NSDate,否则无法对问题中的日期字符串格式进行排序。 -
@vadian 我同意。我有与我描述的相同方法的工作代码(从未失败,手指交叉)。虽然更好地讲述工作代码。
标签: ios arrays objective-c sorting nsdate