我有一个数组(例如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/