Dictionary Swift中for循环内的字典访问

Dictionary Swift中for循环内的字典访问,dictionary,swift,Dictionary,Swift,我正在尝试用Swift做几个PoC——我的第一个实验是一个简单的纸牌游戏 在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:"Ac

我正在尝试用Swift做几个PoC——我的第一个实验是一个简单的纸牌游戏

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
}
let套装:数组=[“黑桃”、“钻石”、“梅花”、“红心”]
让秩:数组=[1,2,3,4,5,6,7,8,9,10,11,12,13]
let rankMap:Dictionary=[1:“王牌”,11:“杰克”,12:“女王”,13:“国王”]
结构卡{
让我们穿上:绳子
设秩:整数
let image:String?//有一些NSObject对应于图像资源。稍后。
}
func buildDeck(NumberOfJokers:Int)->数组{

assert(NumberOfJokers问题在于数组中包含的是
整数
,而字典中使用的是
整数
作为键。请将数组更改为包含
整数
!在


嗯……我不能强迫字典使用整数类型,这会引发大量以“类型‘integer’不符合协议…。@MikeyT.K.,这很奇怪。现在在数组中使用Int。我知道字典键需要是可散列的,我会看看我是否能找到什么。你上次的编辑做到了这一点-文档中的神奇词语是”
对所有通用整数常量使用Int类型
”-当我将
数组改为使用
int
而不是
integer
时,一切都很好。谢谢!@MikeyT.K.,是的
int
是首选。我仍然对字典不能处理整数感到好奇。很高兴它能工作!
// was using Integer so now use Int
let ranks: Array<Int> = [1,2,3,4,5,6,7,8,9,10,11,12,13]

// is keyed with Int
let rankMap: Dictionary<Int,String> = [1:"Ace", 11:"Jack", 12:"Queen", 13:"King"]

// hence your problem.
var b: Integer = 3
var c: Int = 5
let bc = b + c // throws error!