Ios 使用后从数组中删除元素-Swift

Ios 使用后从数组中删除元素-Swift,ios,arrays,swift,random,swift2,Ios,Arrays,Swift,Random,Swift2,我的卡由52张卡组成,因此我为它们创建了一个数组,当用户单击屏幕时,会显示一张卡 我希望当一张牌被抽走时,它在将来就不能再被抽走了。我使用removeAtIndex从阵列中移除拉取的卡。当用户触摸屏幕上的任意位置时,将调用功能pullCard: // Cards let card1 = (1, "AS", "RULE 1") let card2 = (2, "2", "RULE 2") let card3 = (3, "3", "RULE 3") let card4 = (4, "4", "RU

我的卡由52张卡组成,因此我为它们创建了一个
数组
,当用户单击屏幕时,会显示一张卡

我希望当一张牌被抽走时,它在将来就不能再被抽走了。我使用
removeAtIndex
阵列中移除拉取的卡。当用户触摸屏幕上的任意位置时,将调用功能
pullCard

// Cards
let card1 = (1, "AS", "RULE 1")
let card2 = (2, "2", "RULE 2")
let card3 = (3, "3", "RULE 3")
let card4 = (4, "4", "RULE 4")
let card5... (to 52)

// Array
var cards = [
    card1,
    card2,
    card3,
    card4,
    card5... (to 52)
]

func pullCard() {
    let randomCard = Int(arc4random_uniform(UInt32(cards.count)))
    let cardsIndex = randomCard - 1
    let card = cards[cardsIndex]
    cards.removeAtIndex(cardsIndex)
}
例如,游戏拉牌32张,因此将其从阵列中删除,如果游戏拉牌相同,则会因为该卡被删除而崩溃

我尝试使用if语句:

if cards[cardsIndex] == nil {
    pullCard()
}
但它不起作用。
请帮帮我:)

我想这里有个问题:

let cardsIndex = randomCard - 1
应该是:

let cardsIndex = randomCard
实际上,您正在生成
randomCard
作为
0
(cards.count-1)
之间的随机
Int

因此,
randomCard
已经是
的有效索引,不需要减去
1
。 当随机生成的数字恰好是
0
时,您尝试访问
卡的索引
-1
,这在这个世界中是不好的


我承认此错误与您在问题中给出的描述不完全匹配,但我建议您修复它并重试。

您的if语句是否为
cards[cardsIndex]!=无
?这应该可以解决问题。