2016-09-03 12 views
2

私は単純なクイズアプリを作成しました。このクイズアプリは、ユーザーが回答した質問の数を数え、別のビューのラベルに入れます。問題は、ユーザーが最後の質問(配列)に正しく答えると、それは他の質問と同じようにカウンターにカウントアップされず、ビューを切り替えるだけです。 最後の質問に正しく答えられた場合、次のビューで4を正しく表示する代わりに、3が表示されます。 まだ分かりません。どんな助け? マイコード:配列内の最後の要素はゼロです

func pickQuestion(){ 

    if questions.count > 0{ 

     qNumber = random() % questions.count 
     questions.shuffleInPlace() 
     qLabel.text = questions[qNumber].question 

     answerNumber = questions[qNumber].answer 

     for i in 0..<buttons.count{ 
      buttons[i].setTitle(questions[qNumber].answers[i], forState: .Normal) 

     } 

     questions.removeAtIndex(qNumber) 
    } 

    else { 

     NSLog("done") 

     self.performSegueWithIdentifier("Segue1", sender: self) 
    } 
} 

私は答えが正しいかどうかを確認するボタンのコード、:

@IBAction func btn1(sender: AnyObject) { 

    if answerNumber == 0 { 
     pickQuestion() 
     count += 1 
    } 
    else { 
     NSLog("Wrong") 
     pickQuestion() 
    } 
} 

私は questions.removeAtIndex(qNumber) があることが判明デバッグのビットの後配列を削除するもの(removeAtIndexは、すでに回答があったときに質問が再び表示されるのを防ぐために使用されます)

私はqNumberを次のように宣言しています:

qNumber = random()%questions.count

答えた後に削除される現在の配列としてqNumberを設定するにはどうすればよいですか?私は、ビューを切り替えています

:最後の質問を表示した後、他の

{

NSLog("done") 

    self.performSegueWithIdentifier("Segue1", sender: self) 
} 
+2

関連性はありませんが、「変数名」つまり「camelCase」の迅速なコード規約に従ってください。すべての変数は大文字で始まっています。つまり、AnswerNumber、QNumberなどです。 –

+0

答えが正しいときにコードを追加して、カウンタの値を増やすことができます。私はあなたが正しいポイントのカウンターに追加していないだけで、カウンターを増やすものを呼び出す前にビューを切り替えると思っています – Nik

+0

質問を表示するためにコードを貼り付けましたが、答えを評価するためではありません – Shades

答えて

1

は、あなたは配列が空作り、配列から削除します。その後、答える時に、あなたが持っている:関数内

if answerNumber == 0 { 
     pickQuestion() 
     count += 1 
} 

コードはそうではない、とセグエを実行する、questions.countが0よりも大きいかどうかを確認します。セグは、カウントが更新される前に発生します。ブロックを変更して、最初にカウントを更新できるようにしてください。

+0

ありがとうございました。それは今働く。最初に数えたことが仕事でした! – Rido

+0

@リド確かなこと – Shades

関連する問題