2016-12-02 6 views
0

このオブジェクトのオブジェクトの名前はnameENであり、オブジェクトの名前は英語です。このオブジェクトが画面に表示されたとき、それは次のようである:すなわち数値を含むプロパティのローカライズされた説明によるオブジェクトの並べ替えによる並べ替え

NSLocalizedStringFromTable([myObject nameEN]); 

は、名前は、NSLocalizedStringFromTableを使用して局在しています。

私は配列上にこれらのオブジェクトがたくさんあり、その配列をローカライズされた名前でソートしたいと考えています。

問題はなど、オブジェクトがHouse 1House 2 ... House 10のような名前を持っているということです

私はこのコードを使用することをソートすると:

NSArray *sorted = [unsortedArray sortedArrayUsingComparator:^NSComparisonResult(MyOBject *p1, MyOBject *p2){ 
NSString *name1 = NSLocalizedStringFromTable([p1 nameEN], @"MyTable", nil); 
NSString *name2 = NSLocalizedStringFromTable([p2 nameEN], @"MyTable", nil); 
    return [name1 localizedCompare:name2]; 
    }]; 

は私が得るためにはHouse 1House 10です、House 2 ... 2の前に10、3の前に20など。

NSComparisonResultを使用してこれを並べ替えるにはどうすればよいですか?

+0

番号を切り捨て、 'NSNumber'または' NSInteger'に変換して番号でソートする必要があります。 – shallowThought

答えて

1

答えが見つかりました:ちょうどlocalizedCompare:localizedStandardCompare:に変更しても問題なく動作します。

0

NSBackwardsSearchオプションを有効にしてrangeOfCharacterメソッドで最後の空白を見つけることをお試しください。この範囲では、文字列を分割し、名前を含む最初の部分と2番目の部分を含む部分を別々に比較することができます。

+0

ありがとうが、私は簡単な方法を見つけた。私の答えを見てください。 – SpaceDog

+0

もっとよく見えます:) – Adamsor

関連する問題