删除Swift 3后获取金额

时间:2016-12-23 04:27:32

标签: swift

我有一个测验应用,结果看起来像这样 enter image description here

当我再次点击尝试时,问题再次开始。但我不能这样做,因为在我的代码中,我在问题出现后删除了一个数字问题

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和编程。

2 个答案:

答案 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)

因此,您可以重复使用没有损失索引的问题。