2012-04-12 44 views

回答

3

您可以使用描述符或使用比较器对数组进行排序,无论您感觉何种舒适。下面是使用比较的例子:

NSArray *sortedArray = [myArray sortedArrayUsingComparator: ^(id obj1, id obj2) { 
    return [[obj1 date] compare:[obj2 date]]; 
}]; 
+1

很好的答案。但是,考虑到它们是字典,它本身没有'date'属性,所以你必须使用'[obj1 objectForKey:@“date”]'和'obj2'。 – 2012-04-12 03:13:21

+0

或者你可以用你所传递的对象类型 – aryaxt 2012-04-12 03:28:10

+0

@aryaxt替换id,块的签名由'-sortedArrayUsingComparator:'签名设置。此外,使用'NSDictionary *'而不是'id'将无助于使用虚构的'-date'方法。 – 2012-04-13 02:59:15

0

这里的排序描述符选项:

// 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,并不需要保持原有的订购。