1
我有一个字典数组..看起来像这样。Objective-C NSMutableArray:按日期键组织数组照片
我该如何使用NSDate对数组项进行排序(最旧到最新,反之亦然)。我只是做一个基本的选择排序算法还是有一个更短的路?
我有一个字典数组..看起来像这样。Objective-C NSMutableArray:按日期键组织数组照片
我该如何使用NSDate对数组项进行排序(最旧到最新,反之亦然)。我只是做一个基本的选择排序算法还是有一个更短的路?
您可以使用描述符或使用比较器对数组进行排序,无论您感觉何种舒适。下面是使用比较的例子:
NSArray *sortedArray = [myArray sortedArrayUsingComparator: ^(id obj1, id obj2) {
return [[obj1 date] compare:[obj2 date]];
}];
这里的排序描述符选项:
// Adjust the 'ascending' option to invert the sort order.
NSSortDescriptor *dateSortDescriptor = [NSSortDescriptor sortDescriptorWithKey:@"date" ascending:YES];
// The sort descriptors have to go into an array.
NSArray *sortDescriptors = [NSArray arrayWithObject:dateSortDescriptor];
NSArray *sortedArray = [myArray sortedArrayUsingDescriptors:sortDescriptors];
您还可以在那种地方,如果你使用的是NSMutableArray
,并不需要保持原有的订购。
很好的答案。但是,考虑到它们是字典,它本身没有'date'属性,所以你必须使用'[obj1 objectForKey:@“date”]'和'obj2'。 – 2012-04-12 03:13:21
或者你可以用你所传递的对象类型 – aryaxt 2012-04-12 03:28:10
@aryaxt替换id,块的签名由'-sortedArrayUsingComparator:'签名设置。此外,使用'NSDictionary *'而不是'id'将无助于使用虚构的'-date'方法。 – 2012-04-13 02:59:15