对自定义对象数组

时间:2017-03-09 13:23:58

标签: ios objective-c sorting

我尝试了thisthisthis链接

我有一个数组(Say personObjectArray ),其中包含类 Person 的对象。

有2个变量说, NSString *name, NSString *age

此处年龄的类型为nsstring。

现在当我在下面排序时,

personObjectArray = [[personObjectArray sortedArrayUsingComparator:^NSComparisonResult(Person *p1, Person *p2){

    return [p1.age compare:p2.age];

}] mutableCopy];

这样排序,

1, 11, 123 2, 23, 3 ...它按字母顺序排序,而不是将其视为数字。

所以我改变了我的代码,

personObjectArray = [[personObjectArray sortedArrayUsingComparator:^NSComparisonResult(Person *p1, Person *p2){

    return [[p1.age intValue] compare:[p2.age intValue] ];

}] mutableCopy];

它说,Bad receiver type 'int'

我现在怎么排序? 请不要告诉我更改类中年龄的数据类型。我无法改变它。任何帮助表示感谢(:,感谢您的时间。

2 个答案:

答案 0 :(得分:2)

您在基元(非对象)类型int上使用比较,因此它不起作用。

试试这个

 return [@([p1.age intValue]) compare:@([p2.age intValue])];

这里,我们使用NSNumber(这是一个对象类型)来比较int值

  

@()是NSNumber的文字

希望这会对你有帮助..(:

答案 1 :(得分:0)

试试这个:

personObjectArray = [[personObjectArray sortedArrayUsingComparator:^NSComparisonResult(Person *p1, Person *p2){
    return [p1.age compare:p2.age options:NSNumericSearch];
}] mutableCopy];