2017-07-20 173 views
-1

如何根据升序或降序(假设数组中的所有对象都是整数)对正常数组(非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 
+1

是什么阻止你运行一个简单的搜索你拥有? –

回答

0

如果“正常阵”你的意思是C数组,然后使用标准库函数qsort()。在终端中键入man 3 qsort,如果您的Xcode没有手册页作为其文档的一部分。

如果通过“阵列中所有的对象都是整数”你的意思是他们是NSNumber情况下,那么只要你确定你传递给qsort().m文件排序功能则可以使Objective-C的方法调用,以获得来自NSNumber对象的整数值。

0
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]; 
+0

我试过这个,但是我在返回行中得到了一个“Bad receiver type int *”错误。 – fi12

+0

你知道如何解决这个问题吗? – fi12

+0

是的,我会给你完整的答案 –