2012-01-07 49 views
1

我有一個帶有NSNumbers的NSMutableDictionary。當我完成構建集合時,我需要使用當前存儲的值本身重新計算所有值。現在,我使用的快速列舉並存儲到一個新的NSMutableSet,但我不會在目標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功能裏面)。

我有一個優化問題將是:爲什麼你將所有東西都存儲爲NSNumber而不是doubles的數組?唯一的好處(我現在可以看到)這樣做是因爲如果您將NSNumber對象沿着NSArray,NSSetNSDictionary傳遞到磁盤中,或者傳遞到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]];