Ios 使用后从数组中删除元素-Swift
我的卡由52张卡组成,因此我为它们创建了一个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
数组
,当用户单击屏幕时,会显示一张卡
我希望当一张牌被抽走时,它在将来就不能再被抽走了。我使用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]!=无
?这应该可以解决问题。