使用后从Array中删除元素 - Swift

fre*_*dnd 2 arrays random ios swift swift2

我的卡由52张卡片组成,因此我array为他们创建了一张卡片,当用户点击屏幕时,会显示一张卡片.

我希望当卡被拉出时,将来再也无法拉出.我曾经removeAtIndex从拉出卡片中取出array.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)
}
Run Code Online (Sandbox Code Playgroud)

例如,游戏拉出卡32,因此将其从阵列中删除,如果游戏拉同一张卡,则因为卡被删除而崩溃.

我试图使用if语句:

if cards[cardsIndex] == nil {
    pullCard()
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用.请帮我 :)

Luc*_*tti 5

我认为这里有一个问题:

let cardsIndex = randomCard - 1
Run Code Online (Sandbox Code Playgroud)

它应该是:

let cardsIndex = randomCard
Run Code Online (Sandbox Code Playgroud)

事实上,你是在和之间randomCard随机生成的.Int0(cards.count - 1)

所以,randomCard已经是一个有效的指标cards,没有必要减去1.当随机生成的数字确实发生时0,您尝试访问索引-1,cards这在此Universe中是不好的.

我承认这个错误与你在问题中给出的描述完全不符,但我建议你修复它并再试一次.