2011-01-05 43 views
6

我有一個NSMutableDictionary其中每個元素是另一個字典。我可以將其內容複製到另一個NSMutableDictionary的最佳方式是什麼?我試過使用:將NSMutableDictionary的內容複製到另一個NSMutableDictionary中?

firstDictionary = [NSMutableDictionary dictionaryWithDictionary:secondDictionary]; 

但不知道這是否是最好的方式來做到這一點。

+0

至少,它是最具描述性的。你爲什麼認爲這不是最好的?你需要一個深淺的元素拷貝嗎? – Schultz9999 2011-01-05 02:44:12

+0

我需要元素的深層副本。 – NSExplorer 2011-01-05 02:46:52

+0

深度複製意味着您必須複製每個元素的每個字段(這意味着字段的字段的深層副本等)。該功能不是由任何集合類提供的。你必須自己照顧自己。 – Schultz9999 2011-01-05 03:07:52

回答

5

檢查的NSDictionary initWithDictionary:copyItems:方法後

  • 釋放。

    它通過調用copyWithZone:item的類的方法可以深入複製元素。你將不得不照顧自己在該方法中複製字段。

  • 0

    你是什麼意思的「最好」?
    無論如何,我所列出的一些方面在這裏:

    1. firstDictionary = [的NSMutableDictionary dictionaryWithDictionary:secondDictionary];
    2. [[NSDictionary alloc] initWithDictionary:secondDictionary]; //不要忘了用深層副本
    3. 使用淺拷貝
    10

    您還可以使用copy和mutableCopy在可變和不可變字典之間跳轉。

    - (void) someFunc:(NSMutableDictionary *)myDict { 
        NSDictionary *anotherDict = [myDict copy]; 
        NSMutableDictionary *yetAnotherDict = [anotherDict mutableCopy]; 
    } 
    
    0

    順應NSCopying協議,做好每一對象copyWithZone。

    如果NsMutableDictionary包含另一個字典,其中包含另一個字典,那麼您需要在每個字典上對所有級別執行copyWithZone。

    相關問題