如何创建一个包含许多 NSMutableArrays 的 NSMutableDictionary

Posted

技术标签:

【中文标题】如何创建一个包含许多 NSMutableArrays 的 NSMutableDictionary【英文标题】:How to create an NSMutableDictionary containing many NSMutableArrays 【发布时间】:2012-04-17 14:18:33 【问题描述】:

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

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

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

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

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

【问题讨论】:

我更新了对你之前帖子的回答。 【参考方案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];

【讨论】:

感谢您的澄清,这很有帮助。更多信息:我的任务是从用户那里获取一个字符(例如:m),然后遍历数千个单词并将字符串存储到模式类别中。例如:m---、-m-m 等)。我将保留具有最高模式计数的数组并将其用作下一个循环的种子。然后获取另一个字符(例如:e)并再次执行(m---,me--,mee-,m--e),再次保持最高模式计数,直到最终数组缩减为只有一个单词. 这是一个学校游戏项目,我不想通过在这里获得建议来作弊,但我当然可以使用语法帮助来在这种类型的循环中完成这项工作。我将使用您在上面给我的内容,看看结果如何,任何其他信息表示赞赏。 语法现在可以正常工作 - 谢谢。确定在任何给定模式中查找最多单词的最佳逻辑。你是对的,可能有数百万个模式,目标实际上是将最大的模式列表组合在一起并丢弃其他模式。不知道我将如何做到这一点。

以上是关于如何创建一个包含许多 NSMutableArrays 的 NSMutableDictionary的主要内容,如果未能解决你的问题,请参考以下文章

如何将 NSMutableArray(包含其他数组)保存到文件

如何对包含 NSIndexPath 整数数组的 NSMutableArray 进行排序?

如何按数值对包含 NSDictionary 的 NSMutableArray 进行排序?

iOS:将两个 NSMutableArray 存储在 .plist 文件中

在 iOS 中保存 NSMutableArray

NSMutableArray removeObjectAtIndex 在第二次执行时崩溃