按对象值排序NSMutableArray

Sac*_*jay 1 cocoa-touch objective-c ios

可能重复:
如何使用自定义对象对NSMutableArray进行排序?

在这里,我使用int属性newsID 包含NewsData对象的NSMutableArray newsDataArray进行排序.现在正在运作.但是我怎么能以更好的方式做到这一点.有没有更好的方法......

NSSortDescriptor *sortDesc = [[NSSortDescriptor alloc] initWithKey:@"newsID" ascending:NO];
NSArray *tempArray = [newsDataArray sortedArrayUsingDescriptors:[NSArray arrayWithObject:sortDesc]];
NSMutableArray *sortedArray = [NSMutableArray arrayWithArray:tempArray];
NSLog(@"sortedArray=%@" ,sortedArray);
Run Code Online (Sandbox Code Playgroud)

当我使用以下方法与块时出现一些错误.我希望将newsDataArray排序为我的最终结果....任何人都给我一个明确的例子......

Vik*_*ica 7

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

对于NSArray - > new Array对象:

array = [array sortedArrayUsingComparator: ^(id a, id b) {
    return [a.newsTitle compare:b.newsTitle]
}
Run Code Online (Sandbox Code Playgroud)

对于NSMutableArray - >到位:

[array sortUsingComparator: ^(id a, id b) {
    return [a.newsTitle compare:b.newsTitle]
}];
Run Code Online (Sandbox Code Playgroud)

按标量排序:

[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;
}];
Run Code Online (Sandbox Code Playgroud)