ios - 对自定义对象数组内的数字进行排序

标签 ios objective-c sorting

我试过this , thisthis链接

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

Person 有 2 个变量,例如 NSString *姓名,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];

它说,接收器类型“int”错误

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

最佳答案

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

试试这个

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

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

@() is a NSNumber's literal

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

关于ios - 对自定义对象数组内的数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42696583/

相关文章:

ios - 拉动刷新使我的应用程序崩溃

ios - 用户信息。是否使用单例类?

ios - 使用 Reachability 检查 Internet 连接不起作用

algorithm - 在数组中找到一个在线性时间内比任何其他数组大两倍的数字

java - 对数组进行排序并将更改链接到另一个相同大小的数组

ios - 如何将自定义对象的数组列表存储到 NSUserDefaults?

ios - NSDateFormatter 的 NSDate 输出不同

ios - 隐藏类型为 UIKeyboardTypeNumberPad objective c 的键盘

objective-c - 动画时 UIButton 没有响应

javascript - 在设置变量时对数组进行排序后,原始数组也会排序