gpt4 book ai didi

Swift 4 - 使用结构创建多项选择测验 - 主要缺陷

转载 作者:行者123 更新时间:2023-11-28 14:49:41 24 4
gpt4 key购买 nike

我正在使用 Swift 中的 struct 创建一个测验。在大多数情况下,一切都按预期运行/工作。但是,在一定数量的问题之后,我的答案(只有第二个和第四个答案)会交换位置。所以第四个答案变成了第二个答案,第二个答案变成了第四个答案(在用户界面和我的代码中)。这方面的例子是

这是我的结构:

struct Question {
var Question: String!
var Answers: [String]!
var CorrectAnswer: Int!
}

我的代码看起来像这样:

 Questions = [(Question: "What colour is the sky?",    
Answers: ["Pink", "Blue", "Gold", "Green"],
CorrectAnswer: 2)]

但是,这是问题和答案在 UI 上的显示方式 -

What colour is the sky? 
A) Pink
B) Green
C) Gold
D) Blue

由于 CorrectAnswer 等于 2,您必须选择 Green,否则您会答错问题。他们纠正此问题的唯一方法是将 CorrectAnswer 更改为 4,因此它现在不遵循结构。

我是不是做错了什么?

这是我的其余代码的样子:

  var Questions = [Question]()
var QNumber = Int()
var answerNumber = Int()


func generateRandomQuestion() {
if Questions.count > 0 {

QNumber = 0
questionLabel.text = Questions[QNumber].Question
answerNumber = Questions[QNumber].CorrectAnswer

for i in 0..<ButtonsCollection.count {
ButtonsCollection[i].setTitle(Questions[QNumber].Answers[i], for: UIControlState.normal)
}

Questions.remove(at: QNumber)

}

else {


print("Done")

}
}

我不希望单独手动检查所有问题以测试和修改需要的地方,因为如果是这种情况,我有超过 1,000 个问题要检查。我哪里出错了?有没有更简单的方法来插入我的所有问题?

谢谢。

最佳答案

依赖奥特莱斯系列中商品的顺序通常不是一个好主意,因为这很难验证。不过,如果顺序随时间发生变化,我会感到很惊讶。

如何使用按钮的 tag 属性?进入 Storyboard 并将标记 0 分配给您的第一个回答按钮,将标记 1 分配给第二个回答按钮,并标记最后两个 23

然后将循环更改为:

for button in ButtonsCollection {
button.setTitle(Questions[QNumber].Answers[button.tag], for: .normal)
}

这将确保无论您的按钮在 outlet 集合中的顺序如何,正确的答案都将分配给正确的按钮。

关于Swift 4 - 使用结构创建多项选择测验 - 主要缺陷,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49960757/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com