2017-07-20 177 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

是的,我會給你完整的答案 –