关于objective c:按对象值排序NSMutableArray

Sort a NSMutableArray by Object values

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
How to sort an NSMutableArray with custom objects in it?

在这里,我将使用int属性newsid对包含newsdata对象的nsmutableArray newsdataArray进行排序。现在可以了。但我怎样才能更好地做到这一点呢?有没有更好的方法…

1
2
3
4
NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] initWithKey:@"newsID" ascending:NO];
NSArray *tempArray = [newsDataArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDesc]];
NSMutableArray *sortedArray = [NSMutableArray arrayWithArray:tempArray];
NSLog(@"sortedArray=%@" ,sortedArray);

当我使用以下带有块的方法时,会显示一些错误。我希望排序后的NewsDataArray作为我的最终结果…有人给我一个明确的例子…


这里有几种使用比较器的方法

对于nsarray->new array对象:

1
2
3
array = [array sortedArrayUsingComparator: ^(id a, id b) {
    return [a.newsTitle compare:b.newsTitle]
}

对于NSmutableArray->就地:

1
2
3
[array sortUsingComparator: ^(id a, id b) {
    return [a.newsTitle compare:b.newsTitle]
}];

按标量排序:

1
2
3
4
5
6
7
8
[array sortUsingComparator: ^(id a, id b) {
    if ( a.newsID < b.newsID) {
        return (NSComparisonResult)NSOrderedAscending;
    } else if ( a.newsID > b.newsID) {
        return (NSComparisonResult)NSOrderedDescending;
    }
    return (NSComparisonResult)NSOrderedSame;
}];