nssortdescriptorは数字をまったくカウントできません
-
08-10-2019 - |
質問
これとともに
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];
}
解決
ソート記述子が正しく動作するように、「レッスン」を数字に変換する前に文字列をトリミングする必要があります。それ以外の場合、ソート記述子は数字ではなく文字列値のみを表示します。これは、WhitespaceとNewline文字を削除する方法です。
NSString *stringValue = [parsedValue stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
StringValue intvalue]への呼び出しは、文字列の整数値を取得します
int value = [stringValue intValue];
この属性のソート記述子を呼び出す前に、この値を配列に保存します。
それがうまくいくかどうか教えてください。
他のヒント
それはちょうどそれを並べ替えました。結局のところ、すべてのエントリは文字列であり、文字列に「10」は「9」の前にあります...
ここで、それを並べ替えた方法で並べ替えたい場合は、nsnuumberオブジェクトを保持してそれを並べ替えるか、「08」、「09」、「10」、そしておそらくトリムのような正規化された形式で保持されている文字列を持っている必要があります。後で文字列から0をリードします。
[NSSortDescriptor sortDescriptorWithKey:@"self"
ascending:YES
comparator:^(id obj1, id obj2){
return [(NSString*)obj1 compare:(NSString*)obj2
options:NSNumericSearch];
}];
0〜1000000 .....以降の範囲を並べ替えます。
所属していません StackOverflow