swift初心者です。
3択のクイズアプリを作成しています。
しかし、[ choiceButton3.setTitle(tmpArray[3] as? String, for: .normal) ]のところでエラーが出てしまいました。
分かる方、ご教授願います。
swift
1import UIKit 2 3extension Array { 4 func shuffled() -> [Element] { 5 var results = [Element]() 6 var indexes = (0 ..< count).map { $0 } 7 while indexes.count > 0 { 8 let indexOfIndexes = Int(arc4random_uniform(UInt32(indexes.count))) 9 let index = indexes[indexOfIndexes] 10 results.append(self[index]) 11 indexes.remove(at: indexOfIndexes) 12 } 13 return results 14 } 15 16} 17 18class QuizViewController: UIViewController { 19 20 var quizArray = [Any]() 21 22 var correctAnswer: Int = 0 23 24 @IBOutlet var quizTextView: UITextView! 25 26 @IBOutlet var choiceButton1: UIButton! 27 @IBOutlet var choiceButton2: UIButton! 28 @IBOutlet var choiceButton3: UIButton! 29 30 override func viewDidLoad() { 31 super.viewDidLoad() 32 33 var tmpArray = [Any]() 34 35 tmpArray.append(["問題文1",["選択肢1","選択肢2","選択肢3"].shuffled(),"選択肢3"]) 36 tmpArray.append(["問題文2",["選択肢1","選択肢2","選択肢3"].shuffled(),"選択肢3"]) 37 tmpArray.append(["問題文3",["選択肢1","選択肢2","選択肢3"].shuffled(),"選択肢3"]) 38 tmpArray.append(["問題文4",["選択肢1","選択肢2","選択肢3"].shuffled(),"選択肢3"]) 39 tmpArray.append(["問題文5",["選択肢1","選択肢2","選択肢3"].shuffled(),"選択肢3"]) 40 tmpArray.append(["問題文6",["選択肢1","選択肢2","選択肢3"].shuffled(),"選択肢3"]) 41 tmpArray.append(["問題文7",["選択肢1","選択肢2","選択肢3"].shuffled(),"選択肢3"]) 42 tmpArray.append(["問題文8",["選択肢1","選択肢2","選択肢3"].shuffled(),"選択肢3"]) 43 tmpArray.append(["問題文9",["選択肢1","選択肢2","選択肢3"].shuffled(),"選択肢3"]) 44 tmpArray.append(["問題文10",["選択肢1","選択肢2","選択肢3"].shuffled(),"選択肢3"]) 45 46 while (tmpArray.count > 0) { 47 let index = Int(arc4random()) % tmpArray .count 48 quizArray.append(tmpArray[index]) 49 tmpArray.remove(at: index) 50 } 51 52 choiceQuiz() 53 54 } 55 56 func choiceQuiz() { 57 58 let tmpArray = quizArray [0] as! [Any] 59 60 quizTextView.text = tmpArray [0] as! String 61 62 choiceButton1.setTitle(tmpArray[1] as? String, for: .normal) 63 choiceButton2.setTitle(tmpArray[2] as? String, for: .normal) 64 choiceButton3.setTitle(tmpArray[3] as? String, for: .normal)//ここでエラーが出る 65 } 66 67 @IBAction func choiceAnswer(sender: UIButton) { 68 69 let tmpArray = quizArray[0] as! [Any] 70 71 let text = sender.titleLabel?.text! ?? String() 72 73 if tmpArray[4] as? String == String(describing: text.suffix(text.characters.count - 5)) { 74 75 correctAnswer = correctAnswer + 1 76 } 77 78 quizArray.remove(at: 0) 79 80 if quizArray.count == 0 { 81 performSegueToResult() 82 } else { 83 choiceQuiz() 84 } 85 }
###試したこと
###バージョン
x code:9.2
swift:4.0.3