有人可以帮我解决我遇到的NSSortDescriptor问题吗?

时间:2011-12-12 00:03:13

标签: iphone objective-c ios nssortdescriptor

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

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(当前如何进行)对其余部分进行排序

  3. 我将如何做到这一点?

1 个答案:

答案 0 :(得分: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。