2011-12-12 194 views
1

我有以下的代码,通过排序上升。有人可以帮我解决我遇到的NSSortDescriptor问题吗?

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

我想要做的是做一个排序,其中:

  1. 显示,其中一个sortedRelease被判真正的那些

  2. 排序使用acsending休息(它是如何做目前)

我该怎么做呢?

回答

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。

+0

如果我没有获得sortedRelease和需要评估复杂的功能? – jini

+0

如果它很复杂很可能是该类应该有它计算的负有责任。因此,只需让班级计算它并通过只读属性使其可用即可。 –

相关问题