如何在iOS中按最大值和最小值排序

如何在iOS中按最大值和最小值排序,ios,arrays,sorting,Ios,Arrays,Sorting,我将200到1之间的值作为字符串存储在一个名为beaus的数组中 NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"dataoflar" ascending:NO]; [beaus sortUsingDescriptors:@[sortDesc]]; 但是,这仅按第一个数字对它们进行排序(2大于10)。有没有办法按金额排序?如果您必须使用字符串,然后用零填充数字,那么它将按照您想要的方式排序,

我将200到1之间的值作为字符串存储在一个名为beaus的数组中

 NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"dataoflar" ascending:NO];
    [beaus sortUsingDescriptors:@[sortDesc]];

但是,这仅按第一个数字对它们进行排序(2大于10)。有没有办法按金额排序?

如果您必须使用字符串,然后用零填充数字,那么它将按照您想要的方式排序,而不进行其他更改,如:
“002”而不是“2”和“034”而不是“34”

如果出于某些原因不想在导入期间将字符串转换为int,则 必须编写并使用自己的分拣机:

这显示了如何按NSString类型的属性“datatoflat”对beause进行排序,该属性包含数字。排序是按升序进行的。对于降序交换,最后一行返回(i1-i2)


假设值是最终数组中的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
NSMutableArray*mutableBeaus=[[beaus mutableCopy]自动释放];
[mutableBeaus sortUsingComparator:^n比较结果(NSString*obj1,NSString*obj2){
返回[obj1比较:obj2选项:NSNumericSearch];
}];
//mutableBeaus现在将数组按升序1<002<3排序

您可以如下方式更新排序说明:

NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"dataoflar.integerValue" ascending:NO];
[beaus sortUsingDescriptors:@[sortDesc]];

这将获得每个字符串的整数值,排序将基于该数字而不是字符串值。

请更精确地说明值是什么类型的?串?“dataoflar”是什么类型的?为什么要将数字存储为字符串?为什么不把它们存储为数字呢?这是我输入数据的方式。当它们在数组中时,有没有办法将它们转换成数字?…没有,这些数据必须通过字符串输入,否则我会更改它。然后,也许你应该先将字符串转换成int。使用:[String intValue];您不能将NSString强制转换为NSUIntger!!如果您必须使用字符串,然后左键将数字填充为零,那么它将按照您希望的方式进行排序,而不进行任何其他更改,例如:“002”而不是“2”,以及“034”而不是“34”
NSSortDescriptor *sortDesc = [NSSortDescriptor sortDescriptorWithKey:@"dataoflar.integerValue" ascending:NO];
[beaus sortUsingDescriptors:@[sortDesc]];