当我再次点击尝试时,问题再次开始。但我不能这样做,因为在我的代码中,我在问题出现后删除了一个数字问题
func pickQuestion() {
if Questions.count > 0 {
QNumber = Int(arc4random_uniform(UInt32(Questions.count)))
textView.text = Questions[QNumber].Question
AnswerNumber = Questions[QNumber].Answer
for i in 0..<Buttons.count {
Buttons[i].setTitle(Questions[QNumber].Answers[i], for: UIControlState.normal)
}
Questions.remove(at: QNumber) //here
}
如何获取该号码,以便我可以从一开始就提出问题?对不起,但我真的很喜欢swift和编程。
答案 0 :(得分:1)
一种可能的解决方案是拥有两个独立的阵列。
一个阵列用于解决所有问题,另一个用于在游戏中使用。每次开始游戏时,都应该创建一个新数组,该数组是所有问题的数组的精确副本。
当你再次按下它时,它会创建一个与基本数组相同的新数组,包含所有答案,它将操作复制的数组而不是主数组。
顺便说一句,尝试更清楚地格式化您的问题,因为我不确定我是否回答了您的问题:\
答案 1 :(得分:1)
根据我的意见,将一个Question
类对象和整数temIndex
用于临时商店,例如
var temQuestionObj: Question!
let temIndex : Int = 0
并将随机问题存储在temQuestionObj
中,例如
func pickQuestion()
{
if Questions.count > 0
{
QNumber = Int(arc4random_uniform(UInt32(Questions.count)))
temQuestionObj = Questions[QNumber] // TEMPORARY store this Question.
temIndex = QNumber /// TEMPORARY store current index.
textView.text = Questions[QNumber].Question
AnswerNumber = Questions[QNumber].Answer
for i in 0..<Buttons.count {
Buttons[i].setTitle(Questions[QNumber].Answers[i], for: UIControlState.normal)
}
Questions.remove(at: QNumber) //here
}
因此,当您点击&#34;再试一次&#34; 时,您还可以在temQuestionObj
中的特定temIndex
上重复使用/添加Questions
课程数组。
如此
Questions.insert(temQuestionObj, atIndex:temIndex)
因此,您可以重复使用没有损失索引的问题。