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



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

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

…但感觉它有比我想要的更多的通用代码。我必须这样做很多次,我想知道是否有更干净的方法来做到这一点。

提前感谢您的智慧!

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

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

假设两个字典之间的键相同,那么也许您可以创建这样的辅助方法:

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

为什么不只用一行呢?

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

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

最新更新