如何创建包含许多NSMutableArrays的NSMutableDictionary

时间:2012-04-17 14:18:34

标签: ios nsmutablearray nsmutabledictionary

我需要动态地,在运行时使用NSMutableDictionary执行以下操作...

  • 创建(可能是数千个)添加到字典中的数组。这将在一个循环中完成,所需的数组数量将是未知的,因为它们是由一个单词驱逐出来的。
  • 为每个数组创建(数千个)字符串。同样,数据驱动,字符串的数量仅在运行时才知道。
  • 使用表示特定数组的某些字符模式(例如:'m-m-'表示数组包含在第2和第4位置有两个m的字符串。)
  • 使用表示与模式匹配的字符串数(例如:200个字符串为'-mm'模式),并使用该数组实际为200字符串。

    因此,一旦实施,字典将包含每个模式/ 的计数/ 以及与该模式匹配的实际字符串。

    我需要帮助创建字典的正确语法和动态添加数组递增计数/值,我想追加/插入字符串,但那部分我认为我很好。

    相关帖子:NSMutableArray or NSMutableDictionary : which is best for this scenario?

  • 1 个答案:

    答案 0 :(得分:1)

      

    我需要有关创建字典和添加的正确语法的帮助   动态数组,并递增计数/值,

    数组是对象,您将它们添加到字典中的方式与将任何其他对象添加到字典的方式相同:

    [someDictionary setObject:theArray forKey:theKey];
    

    我不清楚你对“递增计数/值”的意思。字典知道它包含多少个键/值对 - 无需增加任何内容。数组也是如此。

    所以听起来你的代码会像:

    NSMutableDictionary *dict;
    for (NSString *word in wordlist) {
        @autorelease {
            NSMutableArray *wordStrings = [NSMutableArray array];
            while (/*some condition based on word*/) {
                NSString *newString = [NSString stringWithFormat:...];
                [wordStrings addObject:newString];
            }
            [dict setObject:wordStrings forKey:word];
        }
    }
    

    我确定这不太对 - 我不知道你真正想要做什么,但上面的代码显示了你如何生成一些数组并将它们添加到字典中。其余的由你决定。

    看看你的编辑,我想你可能会对字典中存储的内容感到有些困惑。字典只是一组键/值对。在这种情况下,值是您添加的数组,键是模式字符串。对于存储计数的每个密钥,没有额外“值”的空间。您可以使用 pattern 和* pattern_count *等键的约定为每个模式添加两个条目。没有必要这样做,但是...为每个模式存储的数组可以很容易地告诉你它包含多少个对象:

    NSArray *wordList = [dictionary objectForKey:pattern];
    int count = [wordlist count];