0
我試圖在Swift中做兩個PoC - 我的第一個實驗是一個簡單的紙牌遊戲。Swift中的for循環內的字典訪問
我遇到一個問題,嘗試訪問字典中for
循環之中:
let suits: Array<String> = ["Spades", "Diamonds", "Clubs", "Hearts"]
let ranks: Array<Integer> = [1,2,3,4,5,6,7,8,9,10,11,12,13]
let rankMap: Dictionary<Int,String> = [1:"Ace", 11:"Jack", 12:"Queen", 13:"King"]
struct Card {
let suit: String
let rank: Integer
let image: String? //There's some NSObject that corresponds to image resources. Later.
}
func buildDeck(NumberOfJokers:Int) -> Array<Card>{
assert(NumberOfJokers <= 2, "Can't have more than two jokers in a deck")
var retDeck: Array<Card> = []
for s in suits {
for r in ranks {
let newSuit = rankMap[r]? //ERROR: Could not find an overload for subscript that accepts the supplied arguments
retDeck.append(Card(suit:s, rank:r, image: nil))
}
}
return retDeck
}
我無法弄清楚是如何使用的r
電流值,同時通過循環ranks
數組作爲標識符以從rankMap
字典中提取適當的字符串。任何方式,我可以嘗試使用r
整數字典鍵引發這個「找不到過載」消息。
我明白我會得到一個可選的rankMap,但展開/鏈接方法不會導致任何不同。
嗯..我不能強迫詞典使用Integer類型,拋出一個巨大的錯誤,每噸與「類型開始'integer'不符合協議......' –
@ MikeyT.K。,這很奇怪,現在在數組中使用Int,我知道字典鍵必須是可散列的,我會看看我是否可以挖掘 – Firo
你最後一次編輯完成了 - 文檔中的魔術字是「使用所有通用整數常量的Int類型」 - 當我更改'rows'數組以使用int而不是整數時',所有我脹。謝謝! –