2013-01-04 192 views
1

將對象從一個NSDictionary複製到另一個NSDictionary的最簡潔方法是什麼?我必須從字典中提取特定值並將它們存儲在新字典中。目前我有一些簡單的代碼像這樣...將對象從一個NSDictionary複製到另一個對象

NSString *value1 = [dictA objectForKey:@"1"]; 
[dictB setObject:value1 forKey:@"1"]; 

...但它感覺像它有比我想要的更常見的代碼。我必須多次這樣做,我想知道是否有更乾淨的方法來做到這一點。

在此先感謝您的智慧!

回答

6

在現代的Objective-C語法中,您實際上可以使用可變詞典編寫dictA[@"key1"] = dictB[@"key1"]

+0

是的,我認爲這是要走的路,謝謝! – BeachRunnerFred

+0

很好的回答,我總是忘了使用快捷... + 1 –

1

爲什麼不在一條線上?

[dictB setObject:[dictA objectForKey:@"1"] forKey:@"1"]; 

在上面的代碼中,如果需要,可以更改密鑰。

+0

-1由於任何特定原因? –

+0

-1不是我的,我確實向你提供了幫助,但我不想使用一行代碼,因爲我的實際變量名稱更加冗長,並且很難保持80字符的上限。另外,在我看來,它與我的原始方法具有相同數量的通用代碼。 – BeachRunnerFred

+0

第二個呢? –

1

假設鍵是兩個庫之間的相同,那麼也許你可以做一個輔助方法是這樣的:

- (void)copyObjectFromDictA:(NSDictionary *)dictA toDictB:(NSDictionary *)dictB forKeys:(NSArray *)keys 
{ 
    for (NSString *key in keys) 
    { 
    [dictB setObject:[dictA objectForKey:key] forKey:key]]; 
    } 
} 
+0

使用的NSMutableDictionary和你有一個]得多: 正確的版本應該是: - (空)copyObjectFromDictA:(*的NSMutableDictionary)格言toDictB :(對於(NSString * key in keys) { [dictB setObject:[dictA objectForKey:key] forKey:key];(NSArray *)dictB forKeys:(NSArray *)keys { } } –

4

如果你想了很多按鍵的做到這一點,可以考慮使用+ (id)dictionaryWithSharedKeySet:(id)keyset。您必須先創建密鑰集sharedKeySetForKeys: 這將導致只有兩行代碼...

+0

謝謝,SAE,這很有趣。我正在查看文檔,但是我不清楚如何使用sharedKeySet來創建新的NSDictionary對象。如果你有機會,你介意發佈一些示例代碼嗎? – BeachRunnerFred

+0

沒關係,我發現它... dictionaryWithSharedKeySet – BeachRunnerFred

相關問題