0

我需要在运行时动态地使用 NSMutableDictionary ...

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

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

    我需要有关创建字典和动态添加数组以及递增计数/值的正确语法的帮助,并且我想附加/插入字符串,但我认为我擅长的那部分。

    相关帖子:NSMutableArray 或 NSMutableDictionary :哪种情况最适合这种情况?

  • 4

    1 回答 1

    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_count*,为每个模式创建两个条目。不过,没有必要这样做……为每个模式存储的数组可以很容易地告诉你它包含多少个对象:

    NSArray *wordList = [dictionary objectForKey:pattern];
    int count = [wordlist count];
    
    于 2012-04-17T14:55:30.560 回答