【问题标题】:Sorting NSMutableArray objects according to the epoch time根据纪元时间对 NSMutableArray 对象进行排序
【发布时间】:2012-03-02 07:08:14
【问题描述】:

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

【问题讨论】:

标签: iphone objective-c ios


【解决方案1】:

对数组进行排序很容易。您所需要的只是一段可以比较数组中的两个对象的代码。您可以以方法、函数或比较器块的形式提供该代码。因此,假设您选择了比较器:

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

用您的代码替换注释行以从每个字符串中获取时间并进行比较。这可能是您真正要询问的部分。我无法为您提供该代码,因为我不确切知道您的字符串是什么样的。如果字符串中唯一的内容是自 epoch 以来的秒数,那么它就像调用 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。这样你就可以使用类似于上面的代码了。

【讨论】:

    【解决方案2】:

    您好,请按这种方式排序。

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

    这对你有用

    【讨论】:

      猜你喜欢
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 2012-02-24
      • 1970-01-01
      • 1970-01-01
      • 2013-11-08
      相关资源
      最近更新 更多