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