1

我有以下按升序排序的代码。

NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"platform.name" ascending:YES];
    NSMutableArray   *sortedReleases = [NSMutableArray arrayWithArray:[theReleases sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]];
    [sortDescriptor release];

我想做的是做一个排序:

  1. 显示 sortedRelease 被标记为 true 的那些

  2. 使用 acsending 对其余部分进行排序(目前的操作方式)

我该怎么做呢?

4

1 回答 1

2

该方法sortedArrayUsingDescriptors:sortDescriptors是复数形式并采用一个数组,因此这意味着您可以拥有多个排序描述符,这些描述符将按照它们在数组中出现的顺序应用。

如果我正确理解您并且您拥有该属性,则以下代码将按照您想要的方式进行排序sortedRelease

NSSortDescriptor *sortBySortedRelease = [[NSSortDescriptor alloc] initWithKey:@"sortedRelease" ascending:NO];
NSSortDescriptor *sortByName          = [[NSSortDescriptor alloc] initWithKey:@"platform.name" ascending:YES];

NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortBySortedRelease, sortByName, nil];

[sortBySortedRelease release]; sortBySortedRelease = nil;
[sortByName release]; sortByName = nil;

NSMutableArray *sortedReleases = [NSMutableArray arrayWithArray:[theReleases sortedArrayUsingDescriptors:sortDescriptors]];
[sortDescriptors release]; sortDescriptors = nil;

这是NSArray文档中的相关部分

- (NSArray *)sortedArrayUsingDescriptors:(NSArray *)sortDescriptors

参数
sortDescriptors
NSSortDescriptor 对象的数组。

返回值
按 sortDescriptors 指定排序的接收数组的副本。

讨论
第一个描述符指定了用于对接收数组的内容进行排序的主键路径。任何后续描述符都用于进一步细化具有重复值的对象的排序。有关其他信息,请参阅 NSSortDescriptor。

于 2011-12-12T00:24:32.837 回答