【问题标题】:Add to NSDictionary entries to NSMutableDictionary添加到 NSDictionary 条目到 NSMutableDictionary
【发布时间】:2012-08-27 13:32:52
【问题描述】:

我有一个遍历数组中一系列字典的 for 循环。

如何将通过 for 循环的所有字典条目合并为一个 NSMutableDictionary

我试过addEntriesFromDictionary,但它不起作用。感谢您的帮助。

for (int i=0; i<sections.count; i++){

    formElements    = [[sections objectAtIndex:i]objectForKey:@"Dictionary"];        
}

【问题讨论】:

  • 你想成为什么关键?也许我误会了你。

标签: iphone objective-c ios ipad


【解决方案1】:
NSMutableDictionary * mutableDict = [NSMutableDictionary dictionary];

for (NSDictionary * formElements in sections)
{
    [mutableDict addEntriesFromDictionary:formElements];
}

如果他们不共享任何密钥是正确的,这应该可以工作。

【讨论】:

    【解决方案2】:

    您可以添加字典对象,如下所示。

    NSMutableDictionary *mDict=[NSMutableDictionary dictionary];
        [mDict addEntriesFromDictionary:DictObj];
    

    【讨论】:

    • 现在发生的事情是每次我通过循环时,最后一个字典替换它之前的字典而不是添加它。所以我在第一个字典中有 5 个条目,在第二个字典中有 2 个条目。最终,我想将它们结合起来计算 7 个条目。
    • @user984248 是的,因为密钥相互替换。您可能应该为此使用一个数组,然后执行 [array addObject:formElements]
    • 我可以这样做并有一本字典作为最终结果吗?我已将所有代码配置为从字典中读取条目。
    • 你不能拥有一本字典。我假设sections 中的字典具有相同的键,您需要为每个字典设置一个唯一键或创建一个多维字典。
    • @user984248 我更新了我的答案。 addEntriesFromDictionary 应该可以工作。
    【解决方案3】:
    NSMutableDictionary *mDict=[[NSMutableDictionary alloc]init];
        NSMutableDictionary *mDict2=[[NSMutableDictionary alloc]init];
    
    //later suppose you have 5 object in mDict and 2 object in mDict2. combine in this Way.
        NSMutableArray *keys=[[NSMutableArray alloc]init];
        NSMutableArray *obj=[[NSMutableArray alloc]init];
    
        keys=[[mDict allKeys] mutableCopy];
        obj=[[mDict allValues] mutableCopy];
    
        [keys addObjectsFromArray:[mDict2 allKeys]];
        [obj addObjectsFromArray:[mDict2 allValues]];
    
        NSMutableDictionary *dict=[[NSMutableDictionary alloc]initWithObjects:obj forKeys:keys];
    

    【讨论】:

      【解决方案4】:

      您可以使用 -objectEnumerator 或 NSDictionary 的其他方法来枚举您的字典。

      所以在你的循环中,你可以枚举你的字典并将所有对象添加一个键到一个大字典中。

      【讨论】:

      • 你能举个例子吗?这就是我要找的……最后是一本大字典。
      • 是的,我可以,但是 Pandey_Laxman 解决方案更好。我完全忘记了这个方法。如果您仍然想要示例,我可以提供一个示例,但我认为问题在于 MrAzulay 所说的重复键。我的解决方案对你没有帮助。
      • 我明白了。他们有不同的键。让我看看我能用数组做什么
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-10
      • 2011-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多