2

NSStringをNSMutable配列にトークン化しました。次に、NSSortDescriptorを使用して、その配列を文字列の長さで並べ替えることができます。次に、特定の単語に対して最も長いものからメソッドを実行できます。

これが私の問題が表面化するところです。配列を編集した文字列に戻すことができるように、配列の元の並べ替え順序を復元する必要があります。

4

2 に答える 2

2

NSMutableArrayは、以前の状態については何も認識せず、現在の状態のみを認識します。おそらくもっと洗練された解決策がありますが、あなたができることの1つは、元のソート順を格納する別の配列を作成することです。

于 2012-04-21T01:29:46.677 に答える
2

私の答えは基本的にSteveの答えと似ていますが、逆の方法で行います。元の配列を保持し、そのソートされたコピーを作成し、ソートされたコピーをステップ実行して処理を行ってから破棄します。だから、例えば

NSArray *yourOriginalArray = ...whatever...;

// do processing
for(id object in [yourOriginalArray sortedArrayUsing<whatever means>])
{
    // if you're doing processing that doesn't change the identity of
    // the object then there's no need to worry about this, but supposing
    // you want to adjust the identity (eg, the source array is full of
    // immutable objects and you want to replace them) then...

    NSUInteger originalIndex = [yourOriginalArray indexOfObject:object];

    id replacementObject = [self mutatedFormOf:object];
    [yourOriginalArray replaceObjectAtIndex:originalIndex
                     withObject:replacementObject];
    // of course, this is only if yourOriginalArray is mutable
}
于 2012-04-21T02:26:52.707 に答える