2

これとともに

    NSSortDescriptor *lessonDescriptor = [[NSSortDescriptor alloc] initWithKey:@"lesson" ascending:YES];
[resultArray sortUsingDescriptors:[NSArray arrayWithObject:lessonDescriptor]];

それは「レッスン」オブジェクトをにソートしています

(
    {
    lesson = 9;
    subject = bg;
},
    {
    lesson = 8;
    subject = bg;
},
    {
    lesson = 11;
    subject = CAE;
},
    {
    lesson = 11;
    subject = CAE;
},
    {
    lesson = 10;
    subject = CAE;
},
    {
    lesson = 10;
    subject = CAE;
},
    {
    lesson = 5;
    subject = Gg;
},
    {
    lesson = 4;
    subject = G;
},
    {
    lesson = 3;
    subject = G;
},
    {
    lesson = 2;
    subject = M;
},
    {
    lesson = 1;
    subject = M;
}

)。

あなたが見ることができるようにそれは正しく数えられていません..誰かが助けることができますか?

どうもありがとう

編集:

価値のあるものを実装する方法がわからない=)

else if ([currentElement isEqualToString:@"lesson"]) 
{ 

    NSString *trimmedString = [string stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
    NSLog(@"trimmed: %@",trimmedString);
    int value = [trimmedString intValue];   ??
    [currentSummary appendString:value];  ??

    [currentSummary appendString:trimmedString]; 
} 
4

3 に答える 3

4

ソート記述子が正しく機能するためには、「レッスン」を数値に変換する前に文字列をトリミングする必要があります。それ以外の場合、ソート記述子は数値ではなく文字列値のみを参照します。これは、空白文字と改行文字を削除する方法です。

NSString *stringValue = [parsedValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];

[stringValue intValue]を呼び出すと、文字列の整数値が取得されます

int value = [stringValue intValue];

この属性のソート記述子を呼び出す前に、この値を配列に保存してください。

それが機能するかどうか教えてください。

于 2010-10-16T14:38:45.910 に答える
1

それはちょうどそれを分類しました。結局のところ、すべてのエントリは文字列であり、文字列内の「10」は結局「9」の前にあります...

予想どおりに並べ替える場合は、NSNuumberオブジェクトを保持して並べ替えるか、文字列を「08」、「09」、「10」などの正規化された形式で保持してから、場合によってはトリミングする必要があります。後で文字列から先行ゼロをオフにします。

于 2010-10-16T16:15:50.573 に答える
0
[NSSortDescriptor sortDescriptorWithKey:@"self"
                              ascending:YES
                             comparator:^(id obj1, id obj2){
    return [(NSString*)obj1 compare:(NSString*)obj2
                            options:NSNumericSearch];
 }];

0〜1000000.....以降の範囲をソートします。

于 2013-01-08T05:42:06.807 に答える