0

動的に、実行時に NSMutableDictionary を使用して次のことを行う必要があります ...

  • ディクショナリに追加される (おそらく数千の) 配列を作成します。これはループ内で行われ、必要な配列の数は単語の plist から駆動されるため不明です。
  • 配列ごとに (数千の) 文字列を作成します。繰り返しになりますが、データ駆動型で、文字列の数は実行時にのみわかります。
  • キーを使用して、特定の配列の文字パターンを表します (例: 'mm-' は、2 番目と 4 番目の位置に 2 つの m を持つ文字列が配列に含まれていることを意味します)。
  • を使用してパターンに一致する文字列の数を表し (例: 200 個の文字列は「-mm」パターン)、配列を使用して実際の 200 個の文字列を取得します。

    したがって、実装されると、ディクショナリには各パターン/キーのカウント/と、そのパターンに一致する実際の文字列が含まれます。

    辞書を作成し、配列を動的に追加し、 count/valueをインクリメントするための適切な構文について助けが必要です。文字列を追加/挿入すると思いますが、その部分は私が得意だと思います。

    関連記事: 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や *pattern_count* などのキーの規則を使用して、パターンごとに2 つのエントリを持つことができます。ただし、その必要はありません...各パターンに格納されている配列から、含まれているオブジェクトの数を簡単に知ることができます。

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