2011-10-18 2 views
1

NSXMLParserを使用してフィードを取得しています。さまざまなプロパティに従って結果の配列をソートしています。解析の結果はNSStringの束です。もちろん、10文字以上の数字を持つ文字列を除いて、すべてが正常に動作しています。NSStringを使用してXMLフィード配列を並べ替えることはできますか?

明らか

9,8,7,6,5,4,3,2,1,12,11,10,0

私はそうのようにそれをしたい:

アレイはそうのように命じれてしまいます

12,11,10,9,8,7,6,5,4,3,2,1,0

NSStringsが「アルファベット順」にソートされているため、 NSNumberやそれに似たものに変換する必要がありますか?これが最善の方法ですか、それとももっと簡単なことがありますか?

私は現在持っている:

if ([elementname isEqualToString:@"rankicon"]) 
{ 
    currentPlayer.rankicon = currentNodeContent; 
} 

、その後:

NSSortDescriptor *rankDescriptor = 
    [[[NSSortDescriptor alloc]    
     initWithKey:@"rankicon" 
     ascending:NO]autorelease]; 

NSArray *sortDescriptors = 
    [NSArray arrayWithObjects:rankDescriptor, nil]; 

[players sortUsingDescriptors:sortDescriptors]; 

答えて

1

これはあなたのケースで動作するはずです(値localizedStandardCompareをパラメータとしてセレクタを追加) -

NSSortDescriptor * rankDescriptor = [[[NSSortDescriptor alloc] initWithKey:@"rankicon" ascending:NO selector:@selector(localizedStandardCompare:)] autorelease]; 
3

あなたはXMLを介し数字のみを受け取った場合、あなたが代わりにNSNumbersとして保存することができます。

NSStringには、可能であればその文字列を整数として返すintValueプロパティもあります。

関連する問題