0

NSMutableArrayオブジェクトプロパティの2つに従ってオブジェクトを含むように注文したいのですが、そのうちの1つはdouble2番目のタイプを持っていNSStringますか?

このメソッドを使用しようとしましたが、例外が発生しました:

NSString * LASTNAME = @"lastName";
NSString * GRADE = @"grade";

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

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

NSArray * descriptors =
   [NSArray arrayWithObjects:lastDescriptor, firstDescriptor, nil];
NSArray * sortedArray =
   [students sortedArrayUsingDescriptors:descriptors];

@interface Student : NSObject
{
    NSString * firstName;
    NSString * lastName;
    double grade;
}
4

3 に答える 3

1

数値には大文字と小文字の区別がありません。GRADE の場合は compare: を使用してみてください

編集後:どのようなエラーが発生したかは言いませんでした。投稿したコードはコンパイルされましたか? firstDescriptor にタイプミスがあります。メソッドの最後に「]」が多すぎます。比較を取り出したときに、おそらくそれを修正しました: (これは何も修正すべきではありませんでした)。

于 2012-05-18T04:10:35.507 に答える
1

NSNumber は に応答しませんlocalizedCaseInsensitiveCompare:。あなたcompare:は数のためにただプレーンが欲しいです。

于 2012-05-18T04:10:40.367 に答える
0

ローカライズされたCaseInsensitiveCompareを削除します

NSSortDescriptor *firstDescriptor =
    [[NSSortDescriptor alloc]
        initWithKey:GRADE
          ascending:YES]];
于 2012-05-18T05:21:09.507 に答える