2012-01-07 8 views
1

NSMutableDictionaryにはNSNumberがあります。セットの構築が終わったら、現在格納されている値自体を使ってすべての値を再計算する必要があります。今私は、高速列挙を使用して、新しいNSMutableSetに格納しますが、私はObjective Cの中で経験していないことだし、これを行うには、より効率的な方法が存在しなければならないんだ。最後にNSMutableDictionary各値に式を適用する最も効率的な方法

for (id key in temp_target_results) 
{ 
     formula_score = MyFormula([[temp_target_results objectForKey:key] doubleValue]); 

     [target_results setObject:[NSNumber numberWithDouble:formula_score] forKey:key]; 
} 

を私がすることによりソートしています私はNSMutableSetを使用しています。

答えて

0

私は、あなたが何をしているのかをわかりませんので、あなたがやっていることを最適化するのにどのくらい手伝っていいのか分かりません(上に貼り付けたコードスニペットの外、あなたのMyFormula機能の中で起こっている)。

最適化に関する質問1つは、NSNumberというオブジェクトをとにかく格納していて、doublesの配列ではないのですか?あなたがNSNumberオブジェクトをNSArrayNSSetまたはNSDictionaryに沿って渡して、ディスクに書き込むか、NSNotificationまたはに渡した場合、オブジェクトをそれに渡している場合は、私が現在見ることができる唯一の利点です。

しかし、私はどうなる事のいくつかはobjectForKeyには、余分な、不要なコールを取り払う含まれます:ここ

for (NSNumber * myNumber in temp_target_results) 
{ 
    formula_score = MyFormula([myNumber doubleValue]); 

    [target_results setObject:[NSNumber numberWithDouble:formula_score] forKey:[myNumber stringValue]]; 
} 

別の考慮事項:

あなたtarget_resultsが表示されますが、あなたのためNSMutableSetではないとsetObject:forKey:NSMutableDictionaryメソッドを実行しています。 target_resultsが実際にNSMutableSetだった場合は、

[target_results addObject: [NSNumber numberWithDouble: formula_score]]; 
関連する問題