按升序或降序对普通数组进行排序
问题描述:
如何根据升序或降序(假设数组中的所有对象都是整数)对正常数组(非NSArray)中的对象进行排序?这甚至有可能吗?按升序或降序对普通数组进行排序
这里是我的代码:
int areas[detectedBlobs.size()];
for (int i = 0; i < detectedBlobs.size(); i++)
{
areas[i] = detectedBlobs[i].getWidth() * detectedBlobs[i].getHeight();
}
NSSortDescriptor *sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self"
ascending: NO];
return [areas sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]]; // error is here
答
如果“正常阵”你的意思是C数组,然后使用标准库函数qsort()
。在终端中键入man 3 qsort
,如果您的Xcode没有手册页作为其文档的一部分。
如果通过“阵列中所有的对象都是整数”你的意思是他们是NSNumber
情况下,那么只要你确定你传递给qsort()
在.m
文件排序功能则可以使Objective-C的方法调用,以获得来自NSNumber
对象的整数值。
答
NSSortDescriptor* sortOrder = [NSSortDescriptor sortDescriptorWithKey: @"self"
ascending: NO];
return [myArray sortedArrayUsingDescriptors: [NSArray arrayWithObject: sortOrder]];
使用后SORT DISCRIPTOR编辑
你必须把它转换为数字的第一
NSNumberFormatter * f = [[NSNumberFormatter alloc] init];
[f setNumberStyle:NSNumberFormatterDecimalStyle];
NSNumber * myNumber = [f numberFromString:string];
是什么阻止你运行一个简单的搜索你拥有? –