我有NSMutableArray,其中包含NSObjects。每个NSObject包含一个NSString作为属性,具有纪元时间。现在我想根据纪元时间对数组对象进行排序...请帮助我实现这一目标...提前致谢
答案 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];
这对你有用