使用多个项目对Objective C中的数组进行排序

时间:2014-05-05 19:11:57

标签: ios objective-c nsarray

是的,有他们的帖子,但没有一个为我工作,我需要排序一个多维数组, 这是我的数组看起来像

(
{
    FileDate = "2014-02-21T19:08:50Z";
    FileName = "Cyber";
    FileSize = 65;
    FileURL = "Inciden.pdf";
},
    {
    FileDate = "2014-02-21T19:08:47Z";
    FileName = "Products";
    FileSize = 64;
    FileURL = "Plan.pdf";
},
    {
    FileDate = "2014-02-21T19:08:36Z";
    FileName = "Network";
    FileSize = 70;
    FileURL = "cPlan.pdf";
},

简单的NSArray * Fulldata; 现在任何人都可以告诉我一个最佳的排序方式。

3 个答案:

答案 0 :(得分:0)

您发布了一系列字典的转储。有许多方法可以让您以不同的方式对数组进行排序。

我偏向于基于块的方法,例如sortedArrayUsingComparator(用于不可变数组)或sortUsingComparator(用于对可变数组进行排序)。

这两种方法都采用比较器块,比较数组中的2个对象并决定哪个应该是第一个,为每个比较返回NSOrderedDescending或NSOrderedAscending。

系统然后通过询问您的代码块来比较对象组来对数组进行排序。

您还可以使用使用排序描述符的方法(例如sortedArrayUsingDescriptors:)如果您需要使用多个键进行排序(例如,根据姓氏对名称数组进行排序,那么基于描述符的方法是更好的选择)姓氏中的名字,然后是名字中的年龄。)

为了帮助您对数组进行排序,我们需要知道您要使用哪种标准对其进行排序。

答案 1 :(得分:0)

我假设您想要按日期排序......

NSArray *sortedArray = [FullData sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"FileDate" ascending:NO]];

应该这样做。

答案 2 :(得分:-1)

尝试使用此方法

- (NSArray *) sortArray: (NSArray*)result sortedKey:(NSString*)sortedKey ASC:(BOOL)ASC
{
      NSSortDescriptor *sortDescriptor;
      sortDescriptor = [[NSSortDescriptor alloc] initWithKey:sortedKey
                                              ascending:ASC];
      NSArray *sortDescriptors = [NSArray arrayWithObject:sortDescriptor];
      NSArray *sortedArray;
     sortedArray = [result sortedArrayUsingDescriptors:sortDescriptors];

     return  sortedArray;
 }

并使用如下:

NSArray *sortedArr = [self sortArray: Fulldata sortedKey:@"FileSize" ASC:NO];

此代码将根据FileSize值对数组进行排序。

如果您希望更大或更小或更小,只需将ASC参数更改为YES / NO