根据纪元时间对NSMutableArray对象进行排序

时间:2012-03-02 07:08:14

标签: iphone objective-c ios

我有NSMutableArray,其中包含NSObjects。每个NSObject包含一个NSString作为属性,具有纪元时间。现在我想根据纪元时间对数组对象进行排序...请帮助我实现这一目标...提前致谢

2 个答案:

答案 0 :(得分:3)

对数组进行排序很容易。您只需要一段可以比较数组中两个对象的代码。您可以以方法,函数或比较器块的形式提供该代码。所以,让我们说你选择比较器:

[myArray sortUsingComparator:^(NSString *string1, NSString *string2) {
        // your code goes here
    }];

用您的代码替换注释行以从每个字符串中获取时间并进行比较。这可能是你真正要问的部分。我无法为您提供该代码,因为我不确切知道您的字符串是什么样的。如果字符串中唯一的东西是自纪元以来的秒数,则它就像调用NSString的-longLongValue方法一样简单:

[myArray sortUsingComparator:^(NSString *string1, NSString *string2) {
        long long time1 = [string1 longLongValue];
        long long time2 = [string2 longLongValue];
        NSComparisonResult result = NSOrderedDescending;
        if (time1 < time2)
            result = NSOrderedAscending;
        else if (time1 == time2)
            result = NSOrderedSame;
        return result;
    }];

如果您的字符串包含其他信息,您可能需要使用一些NSString方法或NSScanner来提取所需的信息。为了简化比较器块,您可能希望使用类别添加一个-epochTimeValue方法来提取NSString的时间。这可以让你使用类似于上面的代码。

答案 1 :(得分:-1)

嗨,请这样排序。

NSSortDescriptor *sortByName = [NSSortDescriptor sortDescriptorWithKey:@"YOURSTRINGKEY" ascending:YES];
NSArray *sortDescriptors = [NSArray arrayWithObject:sortByName];
NSArray *sortedArray = [YOUR_ARRAY sortedArrayUsingDescriptors:sortDescriptors];

这对你有用