在数组中订购日期字符串

时间:2015-03-26 14:37:24

标签: ios objective-c arrays

我已经生成了一个字符串数组,每个字符串都是来自NSDictionary的日期(从plist文件解析),问题是在创建数组时,NSDictionary的年份是随机顺序。

我的代码:

NSString *path = [[NSBundle mainBundle] pathForResource:_country ofType:@"plist"];
    NSDictionary *dict = [[NSDictionary alloc] initWithContentsOfFile:path];

    tableData = [[NSMutableArray alloc] init];

    for (id key in dict) {
        for (NSString *date in [dict objectForKey:key]){
            NSString *baseString = @"";
            baseString = [baseString stringByAppendingFormat:@"%@ %@", date, key];
            [tableData addObject:baseString];
        }
    }

所以上面输出的字符串如:December 05 2014

我需要的是找到一种方法来对这个数组进行排序,以便最早的日期是第一个。

1 个答案:

答案 0 :(得分:-1)

NSArray类有一个-sortedArrayUsingComparator:方法,您可以使用它来对其进行排序。请参阅参考here

您需要根据您使用的日期格式提供合适的比较器作为块。可能使用NSScanner或NSDateFormatter ......

NSArray *sortedArray = [tableData sortedArrayUsingComparator: ^(NSString *str1, NSString *str2) {
    if (/* str1 goes before str2 */) {
        return NSOrderedDescending;
    }
    else if (/* str1 goes after str2 */) {
        return NSOrderedAscending;
    }
    else {
        return NSOrderedSame;
    }
}];