NSStringをNSMutable配列にトークン化しました。次に、NSSortDescriptorを使用して、その配列を文字列の長さで並べ替えることができます。次に、特定の単語に対して最も長いものからメソッドを実行できます。
これが私の問題が表面化するところです。配列を編集した文字列に戻すことができるように、配列の元の並べ替え順序を復元する必要があります。
NSStringをNSMutable配列にトークン化しました。次に、NSSortDescriptorを使用して、その配列を文字列の長さで並べ替えることができます。次に、特定の単語に対して最も長いものからメソッドを実行できます。
これが私の問題が表面化するところです。配列を編集した文字列に戻すことができるように、配列の元の並べ替え順序を復元する必要があります。
NSMutableArrayは、以前の状態については何も認識せず、現在の状態のみを認識します。おそらくもっと洗練された解決策がありますが、あなたができることの1つは、元のソート順を格納する別の配列を作成することです。
私の答えは基本的に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
}