【问题标题】:Error thrown when using sortingUsingDescriptors, NSSortDescriptor and sortDescriptorWithKey methods on an NSMutable array在 NSMutable 数组上使用 sortUsingDescriptors、NSSortDescriptor 和 sortDescriptorWithKey 方法时引发错误
【发布时间】:2014-01-22 00:52:02
【问题描述】:

我创建了一个对象数组,对象的一个​​属性是“rank”。我想按数组中每个对象的排名值对数组进行排序。

它会抛出以下错误:

-[NSSortDescriptor count]:无法识别的选择器发送到实例 0x10a0537d0

这是我对对象数组的方法调用:

[_objects sortUsingDescriptors:[NSSortDescriptor sortDescriptorWithKey:@"rank" ascending:YES selector:@selector(compare:)]];

以下是数组中的对象所属类的相关代码:

@synthesize rank;
- (void)initWithRank:(int)rankNum Name:(NSString*)nameString URL:(NSString*)urlString
{
    self.rank = [NSNumber numberWithInt:rankNum];
    self.name = nameString;
    self.url = urlString;
}

如您所见,“rank”是一个 NSNumber,并且 NSNumber 类有一个名为“compare:”的方法,它应该通过它们的值来比较 NSNumber,所以我不明白为什么它告诉我选择器无法识别.提前感谢您的帮助。

【问题讨论】:

    标签: ios objective-c nsmutablearray nssortdescriptor


    【解决方案1】:

    sortUsingDescriptors: 期望将排序描述符的NSArray 作为其第一个参数:

    [_objects sortUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:@"rank" ascending:YES selector:@selector(compare:)]]];
    

    或者更长一点:

    NSSortDescriptor *descriptor = [NSSortDescriptor sortDescriptorWithKey:@"rank" ascending:YES selector:@selector(compare:)];
    [_objects sortUsingDescriptors:@[descriptor]];
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多