首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Xcode问答式问答应用程序

Xcode问答式问答应用程序
EN

Stack Overflow用户
提问于 2020-05-13 12:15:30
回答 3查看 434关注 0票数 0

我正在尝试创建一个类似于小测验的应用程序,在这个应用程序中,拿着电话的人问问题,其他人回答。所以会有两个字符串。一个有问题,一个有答案。我提出了这样的问题:

代码语言:javascript
运行
复制
var questions = ["Question1", "Question2", "Question3", "Question4", "Question5"]
var answers = ["Answer1", "Answer2", "Answer3", "Answer4", "Answer5"]

当点击按钮时,会弹出一个具有正确答案的新问题。我知道如何从问题中显示随机字符串,但如何将其连接起来以显示正确的答案?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2020-05-13 12:45:31

另一种选择是使用Dictionary,问题作为Key,答案作为Value

代码语言:javascript
运行
复制
let questions: [String : String] = [
    "Question1" : "Answer1",
    "Question2" : "Answer2",
    "Question3" : "Answer3",
    "Question4" : "Answer4",
    "Question5" : "Answer5"
]

然后,您可以得到一个随机的问题&回答如下:

代码语言:javascript
运行
复制
let randomQuestion = questions.randomElement()

然后访问问答文本:

代码语言:javascript
运行
复制
let questionText = randomQuestion?.key ?? ""
let answerText = randomQuestion?.value ?? ""

关于您的下一个问题:,我如何确保同一个问题不会多次显示,以及当没有更多的问题时,

您可以像这样从Array Dictionary Keys构造一个Keys。这些钥匙无论如何都会乱七八糟的,但是如果你想重复的话,你应该洗牌。然后,您可以在随机数组中迭代每个问题:

viewDidLoad中设置属性,而不是当按钮被点击时。

代码语言:javascript
运行
复制
let randomQuestions = questions.keys.shuffled()
var currentQuestionIndex = 0

@IBAction func newQuestionButton(_ sender: Any) {
    guard currentQuestionIndex != questions.count else {
        return
        // or reset your questionIndex and reshuffle.
    }

    // This will give you the Question (and Key)
    let question = randomQuestions[currentQuestionIndex]

    // Use the Key to extract out the answer (value) from the Dictionary
    let answer = questions[question] ?? ""

    // Update your labels
    questionLabel.text = question
    answerLabel.text = answer

    // Increment your question index
    currentQuestionIndex += 1
}
票数 1
EN

Stack Overflow用户

发布于 2020-05-13 12:26:21

您可以简单地将zipquestionsanswers放在一起,然后对结果调用randomElement。这将给出一个包含随机问题的Tuple及其相应的答案-假设questionsanswers的索引是同步的。

代码语言:javascript
运行
复制
var questions = ["Question1", "Question2", "Question3", "Question4", "Question5"]
var answers = ["Answer1", "Answer2", "Answer3", "Answer4", "Answer5"]
let questionsAndAnswers = Array(zip(questions, answers))

let randomQA = questionsAndAnswers.randomElement()
票数 1
EN

Stack Overflow用户

发布于 2020-05-13 12:55:26

您可以创建类似的QuizItem类型。由于您总是需要它们在一起,所以最好将它们绑定在一个元素中,而不是有两个数组。

代码语言:javascript
运行
复制
struct QuizItem {
  var question: String
  var answer: String
}

然后创建并数组(或列表) [QuizItem],并添加所需的所有项。最后,您只需获取数组的随机元素。下面是一些伪代码:

代码语言:javascript
运行
复制
var quizList = [QuizItem]()
quizList.append(...) // add questions & answers

let randomIndex = randomIndex between 0 and quizList.length-1
let item = quizList[randomIndex]

questionLable.text = item.question
answereLabel.text = item.answere
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61774402

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档