0

既知の配列から文字列カウントを取得することに精通しています

    int numberOfWords = [self.wordArray count]; 

しかし、不明な数の配列に不明な数の文字列があり、すべて辞書によって参照されています。これはうまくいきます-良いです。

   NSMutableDictionary *eqClasses = [[NSMutableDictionary alloc] init];

配列と文字列は実行時に追加されます(このボードの助けを借りて):

            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];

次に、辞書を反復処理して、単語数が最大の配列を取得する必要があります。キーを使用せずに辞書内のすべての配列をスクロールする方法はありますか(動的に生成されるため、すべての単語パターンがわかりません)、最も多くの単語を含む配列を見つけたら、その配列/値を取得しますとキー/単語パターン?

4

3 に答える 3

1

^ _ ^さて、辞書にすべてのキーでいっぱいの配列ができたので、配列全体を反復処理して、各キーに対応する値(文字列)を取得できます。

NSArray *keyArray = [myDict allKeys]; //This gets all the keys
NSString *tempString = @""; //This is the string you will save the longest string in. It gets updated when a longer string is found in the following loop.

for (NSString *string in keyArray){
    NSString *stringFromCurrentKey = [myDict objectForKey:string];
    if(stringFromCurrentKey.length > tempString.length){
        tempString = stringFromCurrentKey;
    }
} //By the end, you should be left with the longest string contained in tempString!

^ _ ^これが理にかなっていて、役に立てば幸いです。

于 2012-04-18T18:54:55.177 に答える
1

さて、辞書内のすべてのキーを取得する方法があります:

NSArray *keyArray = [myDict allKeys];

次に、配列を調べて、各キーのオブジェクトを取得します。高速列挙はうまく機能するはずです。

for (NSString *string in NSArray){
    ...
} //Assuming your keys are strings!

各文字列を一時的な文字列に保存し、新しい文字列に遭遇したときに、比較して長い方の文字列を見つけることができます。長い場合は、古い文字列を長い文字列に置き換えます。

これがお役に立てば幸いです。^ _ ^

于 2012-04-18T18:23:52.493 に答える
1

このコードを試してください:

NSArray *largestArray = nil;

for (NSString *key in dictionary)
{
    NSArray *array = [dictionary objectForKey:key];
    if (array.count > largestArray.count) // largestArray.count is 0 if largestArray is nil
    {
        largestArray = array;
    }
}
于 2012-04-18T19:10:27.417 に答える