0

_floorNames (NSMutableArray)を使用してフロア名を取得し、格納しています

_floorNames=[conferenceHall floorDetails:office];


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

これにより、このようにフロア名が出力されます。

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

しかし、それは私のアプリケーションをクラッシュさせます。助言がありますか ...

4

2 に答える 2

4

これを試して、

NSArray *arrFloorNames=[[NSArray alloc]initWithObjects:@"GROUND",@"THIRD",@"FIRST",@"SECOND", nil];
arrFloorNames = [arrFloorNames sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
NSLog(@"%@",arrFloorNames);
于 2013-02-19T07:11:17.057 に答える
0

あなたが欲しいのはあなたが決して得ないことです!!!

「GROUND、THIRD、FIRST、SECOND」から「GROUND、FIRST、SECOND、THIRD」までがお望みです。

数字の内部表現に基づいてこれらの文字列を並べ替えることができるアルゴリズムはありません。これは、0..1..2..3のようなものです。英語で書かれたこれらの整数をソートしたいとします。並べ替えはアルファベット順に実行できるため、結果はFirst、Groung、Second、Thirdになります。

達成する方法は?

マップされた値がThirdから3、secondが2、groundが0の辞書のオブジェクトを作成する必要があります。次に、これらの数値を並べ替えます。そして、values(0,1,2etc)に基づいてキーを取得します。

于 2013-02-19T07:01:48.227 に答える