2012-04-18 35 views
0

我所熟悉的從已知的陣列動感中串計數的NSMutableDictionary

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

現在我需要通過字典來迭代,並獲得與最大字數陣列。有沒有一種方法來滾動字典中的所有數組而不使用鍵(我不會知道所有的字模式,因爲它們是動態生成的),並且一旦我找到數組中最多的單詞,獲取該數組/值和鍵/詞模式?

回答

1

那麼,有一種方式來獲得一本字典中的所有鍵:

NSArray *keyArray = [myDict allKeys]; 

然後你只是去通過陣列,並得到每個鍵的對象。 快速枚舉應該很好地工作。

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

您可以將每個字符串保存到一個臨時字符串,並在遇到新字符串時比較以找到較長的字符串。如果時間更長,請用較長的字符串替換舊字符串。

希望這有助於!^_^

+0

的allKeys不會返回我需要什麼 - 謝謝。但是對於客觀的C來說我是新手,所以我在你描述的下一部分遇到了麻煩。我需要使用密鑰來檢查上述字典。你可能已經解釋了,但更多的片段將不勝感激。 – user1278974 2012-04-18 18:47:25

+0

這是壞的語法,但像我想與上面的示例代碼結合:int numberOfWords = [eqClasses objectForKey:string count]; – user1278974 2012-04-18 18:51:18

+0

看看我的第二個答案是否有意義:) – wayway 2012-04-18 18:55:45

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! 

^_ ^希望這有道理和幫助!

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; 
    } 
} 
+0

**編輯:**修正了在快速枚舉期間NSDictionary返回鍵的事實。 – 2012-04-18 19:12:56