我有以下代码按升序排序。
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"platform.name" ascending:YES];
NSMutableArray *sortedReleases = [NSMutableArray arrayWithArray:[theReleases sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDescriptor]]];
[sortDescriptor release];
我想做的是做一个分类:
显示sortedRelease标记为true的那些
使用acsending(当前如何进行)对其余部分进行排序
我将如何做到这一点?
答案 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。