2015-10-26 69 views
1

我有以下阵列:如何将变量的值(字符串)设置为等于数组中的键?

var deckArray = [ 
     "card1": ["rank","suit"], 
     "card2": ["rank","suit"], 
     "card3": ["rank","suit"], 
     "card4": ["rank","suit"], 
     "card5": ["rank","suit"], 
     "card6": ["rank","suit"], 
     "card7": ["rank","suit"], 
] 

我擦到阵列为简洁的休息,但整个事情中含有52级的对象。我想要做的是从1到52中选择一个随机数,并将firstCardString属性设置为等于数组中与该索引对应的任何键。

例如,如果它生成的随机数是5,它将设置firstCardString等于card5

我试图做到这一点,像这样:

let firstRandomNumber = Int(arc4random_uniform(52)) 
let firstCardString:String = self.deckArray[firstRandomNumber] 

但我发现了以下错误:

Cannot subscript a value of type '[String : Array]' with an index of type 'Int'

这是没有意义的,因为firstCardString:string的类型是明确string,不是int。

回答

2

您已将您的deckArray声明为字典。所以你需要通过一个字符串(键)而不是一个Int

let firstRandomNumber = Int(arc4random_uniform(52))+1 
let firstCardString = deckArray["card\(firstRandomNumber)"] 
+0

好的。在你的回答中,什么是“卡片”意味着代表? – TheDudeGuy

+1

这是字符串插值将随机整数转换为字符串并撰写字典键 –

相关问题