1
Help us understand the problem. What are the problem?

More than 1 year has passed since last update.

posted at

updated at

[Swift]クイズアプリ 難易度に合致した問題を取得し、シャッフルしたあと数問ピックアップして返すやり方

クイズをJSONファイルに作成し

Quiz.json
{
    "fourChoice": [
        {"question": "問題文", "answer": "答えの中身", "difficulty": "難易度", "commentary": "問題の解説"},
        {"question": "問題文", "answer": "答えの中身", "difficulty": "難易度", "commentary": "問題の解説"},
        {"question": "問題文", "answer": "答えの中身", "difficulty": "難易度", "commentary": "問題の解説"}
        以下続く
]

という具合に書いてあります。

[Quiz]の中にはクイズのArrayが入っています。

QuizBox.swift
func getQuestionsForGeneral() -> [Quiz] {
    return Array(getQuestionsByDifficulty(difficulty: 1).shuffled().prefix(10))
}

↑難易度を引数に受け取り、その問題リストを作成し、shuffled()をして問題をランダムにしてから、前の10個を取った上でArrayにして返す感じですね。


shuffled()
に関してはこちらの記事が参考になります。

https://capibara1969.com/2033/

つまり、shuffled()は、要素をシャッフルした配列を新たに生成します。

prefix()
に関していうと、最初からいくつ取り出すか、ということですね。今回は10問取得するので10としています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
1
Help us understand the problem. What are the problem?