https://dmsitter.tistory.com/109
structure를 먼저 공부하고 와서 Quizzler app을 마저 만들어본다.
지난번에 2차원배열을 통해 만들었던 quiz 문항들을 structure 로 만든 퀴즈 배열로 바꿀 것이다.
먼저, 구조체를 만들기 위해 새 파일을 만들건데,
'File - New - File'을 통해 만들거나, 원하는 폴더를 우클릭 - New File...을 선택해도 된다.
Swift File을 선택한 뒤 파일명을 입력해준다.
이 때 파일명은 구조체의 이름과 동일하게 짓는 것이 관습이다.
Question.swift에서 구조체를 만들어준다.
이제 ViewController.swift에서 quiz 배열의 항목들을 구조체의 배열로 변경해준다.
이어서, quiz를 사용하는 코드들도 수정해준다.
이제 구조체에 init을 만들어서 조금 더 코드가 짧아질 수 있도록 수정하고, Question 항목들을 추가할 것이다.
//
// ViewController.swift
// Quizzler-iOS13
//
// Created by Angela Yu on 12/07/2019.
// Copyright © 2019 The App Brewery. All rights reserved.
//
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var questionLabel: UILabel!
@IBOutlet weak var progressBar: UIProgressView!
@IBOutlet weak var trueButton: UIButton!
@IBOutlet weak var falseButton: UIButton!
let quiz = [
Question(q: "A slug's blood is green.", a: "True"),
Question(q: "Approximately one quarter of human bones are in the feet.", a: "True"),
Question(q: "The total surface area of two human lungs is approximately 70 square metres.", a: "True"),
Question(q: "In West Virginia, USA, if you accidentally hit an animal with your car, you are free to take it home to eat.", a: "True"),
Question(q: "In London, UK, if you happen to die in the House of Parliament, you are technically entitled to a state funeral, because the building is considered too sacred a place.", a: "False"),
Question(q: "It is illegal to pee in the Ocean in Portugal.", a: "True"),
Question(q: "You can lead a cow down stairs but not up stairs.", a: "False"),
Question(q: "Google was originally called 'Backrub'.", a: "True"),
Question(q: "Buzz Aldrin's mother's maiden name was 'Moon'.", a: "True"),
Question(q: "The loudest sound produced by any animal is 188 decibels. That animal is the African Elephant.", a: "False"),
Question(q: "No piece of square dry paper can be folded in half more than 7 times.", a: "False"),
Question(q: "Chocolate affects a dog's heart and nervous system; a few ounces are enough to kill a small dog.", a: "True")
]
var questionNumber = 0
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
updateUI()
}
@IBAction func answerButtonPressed(_ sender: UIButton) {
let userAnswer = sender.currentTitle //True or False
// let actualQuestion = quiz[questionNumber], 바로 아랫줄의 코드를 사용하기 위해 필요한 코드
// let actualAnswer = actualQuestion.answer와 동일하다. 둘 중 편한 방법으로 사용하면 된다.
let actualAnswer = quiz[questionNumber].answer
if userAnswer == actualAnswer {
print("Right!")
} else {
print("Wrong!")
}
if questionNumber < quiz.count - 1 {
questionNumber += 1
} else {
questionNumber = 0
}
updateUI()
}
func updateUI() {
questionLabel.text = quiz[questionNumber].text
}
}
'Today I Learned' 카테고리의 다른 글
20210628 Quizzler project - 4 (with MVC design pattern) (0) | 2021.06.29 |
---|---|
20210627 Quizzler project -3 (0) | 2021.06.27 |
20210616 Quizzler project -1 & 2D array (0) | 2021.06.17 |
20210615 Egg Timer project -6 & Debug (0) | 2021.06.15 |
20210614 - Egg Timer project -5 (0) | 2021.06.15 |