【问题标题】:adding an NSMutableArray to NSMutableDictionary将 NSMutableArray 添加到 NSMutableDictionary
【发布时间】:2014-12-02 22:55:49
【问题描述】:

我正在尝试将 NSMutableArray 添加到 NSMutableDictionary

我的代码如下所示:

[myDictionary setObject:[NSMutableArray array] ForKey: myKey];
[[myDictionary objectForKey:myKey] addObject: myString];

所以我想做的是:我有一个空字典,我想在那个字典中有多个数组。每个数组都有自己的键。在每个数组中我想添加一个 NSString,这样每个数组就会被几个 NSString 对象填满。

但是,当我尝试使用以下方法检查 myDictionary 的内容时:

for(id key in myDictionary)
{
    NSLog(@"key=%@ value=%@", key, [myDictionary objectForKey:key]);
}

每个键我只会得到一个条目。我做错了什么?

提前致谢,对菜鸟表示抱歉

【问题讨论】:

  • 显示您的代码,其中您向每个数组添加了多个值。
  • 首先,不要像那样“链接”调用。创建您的数组,将地址分配给临时指针,然后将该指针插入字典。并将对象添加到数组中,将其地址放入临时指针中,然后使用它来添加条目。为临时指针使用有意义的名称。这将不那么令人困惑(对我来说,如果不是对你来说)。

标签: objective-c arrays nsmutablearray nsmutabledictionary nslog


【解决方案1】:

您的代码似乎是正确的,它应该简单地打印出 NSDictionary 内每个数组中的字符串列表。您是否向数组中添加了多个字符串对象?如果只有一个值,那么它当然只会打印一个值:)

如果你想单独访问数组中的每个值,试试这个:

for(id key in myDictionary)
{
    NSArray *array = [myDictionary objectForKey:key];
    for (NSString *value in array) {
        NSLog(@"value: %@", value);
    }
}

【讨论】:

  • 啊,似乎是我误解了我的代码的一部分,我以为:“[[myDictionary objectForKey:myKey] addObject:myString];”这会在该键处将 NSString 添加到某个数组。哪个,从你的好回答和其他 cmets 中读取,显然不是
  • 这正是它正在做的事情。将 NSDictionary 视为一种使用字符串而不是数字访问的数组类型。布局是这样的: NSDictionary { "somekey" : Array (item1, item2, item3), "someotherkey" : Array (item4, item5, item6) } 因此,使用单个“for in”语句,您正在迭代仅在 NSDictionary 中的对象。这些对象中的每一个都是一个 NSArray。然后嵌套的“for in”语句遍历每个 NSArray 中的对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多