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 *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 回答
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 回答