早速質問なのですが、今現在簡単な間違い探しの様なゲームを作成しようとしています。
内容としては、正方形を同じ形で色を付けて4つ表示し、1つだけ違う色で表示するというものです。

そこでいくつもの問題を作り(赤色、黄色、青など)ランダムに表示させた後に
1回選ばれた問題を削除する(配列から削除し、次回から表示させない)用にしたいのですが
うまくその問題が削除されずに、また表示されてしまいます。
コードは以下になります。

コードの問題があると思う所は、「問題をランダムに選んでその後削除する」になります。
よろしくお願いします。

画像の説明をここに入力
画像の説明をここに入力

import SpriteKit
import GameplayKit

class GameScene: SKScene {

    //問題設定
    let randomSource = GKARC4RandomSource()
    var questionMax:Int = 6
    var questionList:[SKShapeNode] = []
    let correct = ["■"]
    let mistake = ["■"]
    var questionNo:Int = 0
    var misutakeNo:Int = 0

    override func didMoveToView(view: SKView) {
        //問題実行
        questioning()
    }

    //問題をランダムで選んでその後削除する
    func questioning(){
        var items = [newQuestion, newQuestion2]
        let q1 = Int(arc4random()) % items.count
        items[q1]()
        let _ = items.removeAtIndex(q1)
    }

    //問題設定1青
    func newQuestion(){
        questionMax = 4
        questionNo = randomSource.nextIntWithUpperBound(correct.count)
        misutakeNo = randomSource.nextIntWithUpperBound(questionMax)
        questionList = []

        for LoopID in 0..<questionMax {
            let question = SKShapeNode(rectOfSize:CGSizeMake(308.0,308.0))
            let x = (LoopID % 2) * 315 + 165
            let y = (LoopID / 2) * 315 + 470
            question.position = CGPoint(x: x, y: y)
            self.addChild(question)
            questionList.append(question)

            let sikisai = SKLabelNode()

            if LoopID != misutakeNo {
                sikisai.text = correct[questionNo]
                sikisai.fontColor = UIColor(red: 0/255, green: 0/255, blue: 255/255, alpha: 1.0)
            }else {
                sikisai.text = mistake[questionNo]
                sikisai.fontColor = UIColor(red: 0/255, green: 0/255, blue: 100/255, alpha: 1.0)
            }

            sikisai.fontSize = 405
            sikisai.position = CGPoint(x:0, y:-155)
            question.addChild(sikisai)
        }
    }

    //問題設定2赤
    func newQuestion2(){
        questionMax = 4
        questionNo = randomSource.nextIntWithUpperBound(correct.count)
        misutakeNo = randomSource.nextIntWithUpperBound(questionMax)
        questionList = []

        for LoopID in 0..<questionMax {
            let question = SKShapeNode(rectOfSize:CGSizeMake(308.0,308.0))
            let x = (LoopID % 2) * 315 + 165
            let y = (LoopID / 2) * 315 + 470
            question.position = CGPoint(x: x, y: y)
            self.addChild(question)
            questionList.append(question)

            let sikisai = SKLabelNode()

            if LoopID != misutakeNo {
                sikisai.text = correct[questionNo]
                sikisai.fontColor = UIColor(red: 255/255, green: 0/255, blue: 0/255, alpha: 1.0)
            }else {
                sikisai.text = mistake[questionNo]
                sikisai.fontColor = UIColor(red: 100/255, green: 0/255, blue: 0/255, alpha: 1.0)
            }

            sikisai.fontSize = 405
            sikisai.position = CGPoint(x:0, y:-155)
            question.addChild(sikisai)
        }
    }

    //タップを調べる
    func answerCheck(NO:Int) {
        if NO == misutakeNo {
            //正解
            questioning()
        } else {
            //不正解
            questioning()
        }

        for LoopID in 0..<questionMax {
            questionList[LoopID].removeFromParent()
            questioning()}
        }

    //タップ処理
    override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
        for touch in touches {
            let location = touch.locationInNode(self)
            let touchNodes = self.nodesAtPoint(location)

            for tNode in touchNodes {
                for LoopID in 0..<questionMax {
                    if tNode == questionList[LoopID]{
                        answerCheck(LoopID)
                    }
                }
            }
        }
    }
}