Ios 如何对日期进行排序?

Ios 如何对日期进行排序?,ios,objective-c,iphone,Ios,Objective C,Iphone,我有这样一个数组: <__NSArrayM 0x79f3a4a0>( { "act_date" = "02/03/2015"; "act_id" = 3; "act_name" = test2; }, { "act_date" = "03/03/2015"; "act_id" = 4; "act_name" = test3; }, { "act_date" = "01/03/2015"; "act_id" = 5;

我有这样一个数组:

<__NSArrayM 0x79f3a4a0>(
{
    "act_date" = "02/03/2015";
    "act_id" = 3;
    "act_name" = test2;
},
{
    "act_date" = "03/03/2015";
    "act_id" = 4;
    "act_name" = test3;
},
{
    "act_date" = "01/03/2015";
    "act_id" = 5;
    "act_name" = test1;
}
)

但它只返回带日期的数组,如何使用排序的日期数组添加我的所有数据???

您正在从数组中取出日期,不需要,您仍然可以使用下面的方法对字典数组进行排序

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"act_date" ascending:YES];
NSArray *sortedArray = [tblList sortedArrayUsingDescriptors:@[sortDescriptor]];

您可以使用简单的NSSortDescriptor

NSSortDescriptor * sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"act_date" ascending:YES selector:@selector(compare:)];
array = [array sortedArrayUsingDescriptors:@[sortDescriptor]];
如果需要,可以添加更多描述符进行排序,例如按act_id进行排序。优先级由传递给方法
-sortUsingDescriptor

[编辑]

正如holex act_所指出的,日期是一个字符串,应该使用
NSDateFormatter
将其转换为
NSdate
。或者您只需对字符串进行排序。

我正在对带有日期的字典数组进行排序-

    NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"act_date" ascending:NO];
[mArrTimeline sortUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]];

如果在比较之前需要将
“act\U date”
的值转换为适当的
NSDate
,我会这样做:

NSDateFormatter *_dateFormatter = [[NSDateFormatter alloc] init];
[_dateFormatter setDateFormat:@"MM/dd/yyyy"];

NSArray *_yourOriginalArray = // ...
NSArray *_sortedArray = [_yourOriginalArray sortedArrayUsingComparator:^NSComparisonResult(NSDictionary * obj1, NSDictionary * obj2) {
    return [[_dateFormatter dateFromString:[obj2 valueForKey:@"act_date"]] compare:[_dateFormatter dateFromString:[obj1 valueForKey:@"act_date"]]];
}];

然后,
\u sortedDarray
将对项目进行排序。

尝试此代码。可能对你有用

NSString *strKey = @"act_date";
NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:strKey ascending:YES];

NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
tempArr = (NSMutableArray *)[arr sortedArrayUsingDescriptors:sortDescriptors];

你的问题不是日期,而是你有一系列字典。看到这里,您的结果只返回带有日期的数组,因为您只向tempArray添加“act_date”值,请尝试将对象添加到tempArray。在sortUsingComparator中:返回[yourObject2.act_date compare yourObject1.act_date]而不是使用字典,将它们转换为对象。Obj-C不是javascript,因此您不应该使用转换为字典的对象。NSDate不是OP显示的结构的有效键
NSString *strKey = @"act_date";
NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:strKey ascending:YES];

NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
tempArr = (NSMutableArray *)[arr sortedArrayUsingDescriptors:sortDescriptors];