【问题标题】:Sort a NSMutableArray by Object values [duplicate]按对象值对 NSMutableArray 进行排序[重复]
【发布时间】:2012-01-17 12:50:30
【问题描述】:

可能重复:
How to sort an NSMutableArray with custom objects in it?

我在这里对包含 NewsData 对象的 NSMutableArray newsDataArray 进行排序,该对象具有 int 属性 newsID。这正在工作。但我怎样才能以更好的方式做到这一点。有没有更好的方法...

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

当我使用以下带有块的方法时,会显示一些错误。我想要排序的 newsDataArray 作为我的最终结果....任何人都给我一个明确的例子...

【问题讨论】:

标签: objective-c ios cocoa-touch


【解决方案1】:

有几种方法,这里使用comparator

对于 NSArray -> 新的 Array 对象:

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

对于 NSMutableArray -> 就地:

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

按标量排序:

[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;
}];

【讨论】:

  • 想要比较一个int值的'newsID'...我怎么能...
  • 在这里我将创建我的对象 a 和 b ...
  • 它说错误'a and b not found' ...
  • 方法sortUsingComparator: 将对象传递到块中。如果您的代码不起作用,请查看文档中的块和这些排序方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-18
  • 1970-01-01
  • 2021-04-23
  • 2012-01-12
相关资源
最近更新 更多