将对象从一个NSDictionary复制到另一个NSDictionary

时间:2013-01-04 16:49:31

标签: iphone objective-c ios cocoa

将对象从一个NSDictionary复制到另一个NSDictionary的最简洁方法是什么?我必须从字典中提取特定值并将它们存储在新字典中。目前我有一些简单的代码,如此......

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

...但感觉它有比我想要的更常见的代码。我必须多次这样做,我想知道是否有更清洁的方法来做到这一点。

提前感谢您的智慧!

4 个答案:

答案 0 :(得分:6)

在现代Objective-C语法中,您实际上可以使用可变字典编写dictA[@"key1"] = dictB[@"key1"]

答案 1 :(得分:4)

如果您想为很多密钥执行此操作,请考虑使用+ (id)dictionaryWithSharedKeySet:(id)keyset。您必须先使用sharedKeySetForKeys:创建密钥集 这将导致只有两行代码...

答案 2 :(得分:1)

为什么不在一行?

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

在上面的代码中,您可以根据需要更改密钥。

答案 3 :(得分:1)

假设两个词典之间的键是相同的,那么也许你可以制作一个这样的辅助方法:

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