我将 200 到 1 的值作为字符串存储在一个名为 beaus 的数组中。
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"dataoflar" ascending:NO];
[beaus sortUsingDescriptors:@[sortDesc]];
但是,这仅按第一个数字对它们进行排序(2 大于 10)。有没有办法按数量排序?
假设最终数组中的值是 NSStrings 并不重要,您应该像这样对其进行排序
NSMutableArray *mutableBeaus = [[beaus mutableCopy] autorelease];
[mutableBeaus sortUsingComparator:^NSComparisonResult(NSString *obj1, NSString *obj2) {
return [obj1 compare:obj2 options:NSNumericSearch];
}];
// mutableBeaus now has the array sorted in an ascending order 1 < 002 < 3
您可以像这样更新您的排序描述:
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"dataoflar.integerValue" ascending:NO];
[beaus sortUsingDescriptors:@[sortDesc]];
这将获得每个字符串的整数值,并且排序将基于该数字而不是字符串值。
如果由于某些原因您不想在导入期间将字符串转换为 int,则必须编写并使用自己的排序器:
这显示了如何通过包含数字的 NSString 类型的属性“datatoflat”进行排序。排序完成升序。对于降序交换最后一行到return (i1- i2)
.
NSArray *sortedArray;
sortedArray = [beaus sortedArrayUsingComparator:^NSComparisonResult(id a, id b) {
NSString* s1 = [(NSString*) a dataoflar];
NSString* s2 = [(NSString*) b dataoflar];
int i1 = [s1 integerValue];
int i2 = [s2 integerValue];
return (i2 - i1);
}];
如果你必须使用字符串,然后用零填充你的数字,那么它会像你想要的那样排序,而不是其他更改,比如:'002' 而不是 '2' 和 '034' 而不是 '34'