私は
NSArray *foo = @[@"Chicago Hts, IL", @"Chicago Heights, IL", @"Chicago, IL"];
このようなソートされた配列を取得したい:
@[@"Chicago, IL", @"Chicago Heights, IL", @"Chicago Hts, IL"];
使った
[foo sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:),
その結果、
@[@"Chicago Heights, IL", @"Chicago Hts, IL", @"Chicago, IL"];
この配列には約100k以上のエントリがあるため、空のスペースに基づいて文字列を分割し、それを並べ替えて「分割解除」すると、パフォーマンスが低下します。
Finderが「localizedCaseInsensitiveCompare」と同じ方法でファイルをソートすることに気付いたので、運が悪かったと思います。
私は最初の文字「a」に基づいて配列を分割し、空のスペースに基づいて文字列を結合し、それを並べ替えてから、tableViewでユーザーに表示し、ユーザーが最初の結果セットを超えてスクロールした場合、 'b'の次のオブジェクトのセットを取得し、空のスペースを無視して単語を結合し、並べ替え、'単語の結合を解除して'表示します。