我試圖找出排序NSMutableDictionary
的最佳方法。我有一個存儲卡片值(即14)的卡片密鑰(即aceSpades)字典。然後,我使用NSMutableArray
將52個卡片密鑰混洗成一個名爲shuffledCards的數組。最後,我從shuffledCards製作另一個數組,這個數組需要一部分(15)shuffledCards並將它們放入一個名爲computerHand的數組中。如何從NSMutableArray創建NSMutableDictionary?
新陣列computerHand不夠好,因爲我需要能夠使用卡片鍵連接卡片的值。我真正需要做的是爲陣列shuffledCards中的computerHand創建一個新的NSMutableDictionary
,以便我可以按卡片值對其進行排序,並仍能夠檢索卡片密鑰。
我想,我需要這樣的事情,在那裏currentCard是shuffedCards陣列的第一張牌:
if (currentCard == 1) {
[compHandDictionary setObject:[[highCardDictionary
valueForKey:[shuffledCards objectAtIndex:currentCard]] intValue]
forKey:[cardsShuffled objectAtIndex:currentCard]];
}
然而,這是不允許的,因爲「INT」到「ID」是不允許的。
可能有更好的方法,但我一直沒能找到任何東西。任何幫助,將不勝感激。
...
我通過修改jstevenco的回答得到了這個工作。我創建了兩個數組併爲15張卡片的電腦手形成了一本新字典。然後用我的排序:
NSArray* sortedKeys = [newDict keysSortedByValueUsingComparator: ^(id obj1, id obj2) {
if ([obj1 integerValue] > [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedAscending;
}
if ([obj1 integerValue] < [obj2 integerValue]) {
return (NSComparisonResult)NSOrderedDescending;
}
return (NSComparisonResult)NSOrderedSame;
}];
謝謝大家!
爲什麼你只是不使用原始字典來獲取卡片值? – Tricertops
這就是我想要做的,但因爲我從沒有卡片值的數組創建新字典我還沒有找到可以從原始字典中獲取卡片值的代碼 –
使用currentCard shuffledCards,我可以得到Card Key和High Card值,但是我需要弄清楚如何將這些值寫入一個新字典 –