2013-02-19 196 views
0

我正在地板的名稱和使用排序NsMutable陣列

_floorNames=[conferenceHall floorDetails:office]; 


NSLog(@"floor names=%@",_floorNames); 

這將打印這樣的地板名稱中_floorNames (NSMutableArray)存儲。

GROUND, 
THIRD, 
FIRST, 
SECOND 

現在我想的是樓層名稱的NSMutableArray排序爲

GROUND, 
FIRST, 
SECOND, 
THIRD 

我用

NSSortDescriptor *aa=[[NSSortDescriptor alloc]initWithKey:floor ascending:YES               selector:@selector(localizedCaseInsensitiveCompare:)]; 

NSArray *descriptors = [NSArray arrayWithObjects:aa, nil]; 
    a = [array sortedArrayUsingDescriptors:descriptors]; 

但它會崩潰我的應用程序。 任何建議...

+0

建議:1:不使用Xcode的標籤,這是不恰當的。 #2:格式化您的代碼,無法閱讀。 #3:問一個真正的問題 - 我無法推斷你期望發生什麼以及實際發生了什麼。 – 2013-02-19 06:21:52

+0

我的floorNames mutableArray包含地板名稱,如GROUND, THIRD,FIRST,SECOND。如何對這個mutableArray進行排序以獲得GROUND,FIRST,SECOND,THIRD。 – user2043033 2013-02-19 06:27:52

回答

0

你想要的是你永遠不會得到!

「地面,第三,第一,第二」到「地面,第一,第二,第三」是你想要的。

沒有算法可以根據它們在數字中的內部表示對這些字符串進行排序。這是類似的,0..1..2..3。你想排序這些用英文寫成的整數。排序可以按字母順序完成,因此您的結果將按照第一,第二,第三。

如何實現?

您需要創建一個字典對象,其映射值爲第三個爲3,第二個爲2,地爲0.然後對這些數值進行排序。然後根據值(0,1,2etc)獲取Keys。

4

試試這個,

NSArray *arrFloorNames=[[NSArray alloc]initWithObjects:@"GROUND",@"THIRD",@"FIRST",@"SECOND", nil]; 
arrFloorNames = [arrFloorNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)]; 
NSLog(@"%@",arrFloorNames); 
+0

arrFloorNames = [arrFloorNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare :)]; NSLog(@「%@」,arrFloorNames);通過使用這個我越來越不好在我的應用程序訪問。 – user2043033 2013-02-19 07:30:57

+0

示例硬編碼檢查此代碼 - (void)viewDidLoad方法 – Ravindhiran 2013-02-19 07:42:45

+0

@ user2043033:此代碼如何根據您的要求進行排序。請讓我知道。 – 2013-02-22 16:18:30