【问题标题】:appending strings to NSMutableArray in NSMutableDictionary将字符串附加到 NSMutableDictionary 中的 NSMutableArray
【发布时间】:2012-04-18 15:38:00
【问题描述】:

每次一个单词匹配另一个单词的模式时,我都需要将字符串附加到字典中保存的数组中。下面的第二行 (setObject) 覆盖而不是追加。
最终结果应该是字典中的数组,其中键(模式)标识了许多符合该模式的字符串。

    NSMutableDictionary *eqClasses = [[NSMutableDictionary alloc] init];
    [eqClasses setObject:tempWordStr forKey:wordPattern];

有没有简单的追加方法?

【问题讨论】:

    标签: ios nsmutablearray nsmutabledictionary


    【解决方案1】:

    试试这个:

    NSMutableArray* array = [eqClasses objectForKey:wordPattern];
    if(!array) {
      // create new array and add to dictionary if wordPattern not found
      array = [NSMutableArray array];
      [eqClasses setObject:array forKey:wordPattern];
    }
    [array addObject:tempWordStr];
    

    【讨论】:

    • 非常有帮助-谢谢。以及如何将这个数组迭代地添加到字典中? (我的目标是拥有一个包含数千个数组的字典,每个数组使用 wordpattern 作为键,动态添加新数组,动态添加新字符串)
    • 数组已经在字典中了,代码只是在最后添加了字符串对象
    • 我的意思是,循环需要添加数组(基于wordpattern)并向这个数组添加字符串。因此,该数组可能已添加,也可能尚未添加。代码会是什么样子 1.检查数组是否存在(通过 wordpattern) 2. 添加新数组(或不添加),将新字符串添加到数组中。 (我是目标 C 的新手)
    • 现在说得通了——谢谢。我会投票给你,但我还是新来的,我的声誉还没有上升。
    【解决方案2】:

    您指出字典中的值应该是数组,但在我看来 eqClasses 包含 NSStrings (tempWordStr)。你不需要创建一个 NSArray 来保存与关键字关联的 NSStrings,然后使数组成为字典中与关键字对应的值吗?如果字典中已经包含键,则需要检索与键关联的数组,将新字符串添加到数组中,然后使用带有键的数组调用 setObject。

    【讨论】:

    • 是的,我想我在挣扎。我需要有一个动态添加数千个数组的字典,并且这些数组动态添加数千个字符串。每个数组由一个单词模式(字典中的键)表示,值是实际的数组。
    • 您能否附上一个 sn-p 来说明您的建议?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多