6.クイズソフト

9170 ワード

最終的な姿.

クイズアプリ

プロジェクト学習


可変不変性;構造体宣言と使用;関数宣言と使用を返す;
MVC設計モードの学習、内部パラメータと外部パラメータの宣言

こうぞうたい

struct Question {
    let text: String
    let answer: Array<Any>
    let correctAnswer: String
    init(q: String, a: Array<Any>,correctAnswer: String) {
        text = q
        answer = a
        self.correctAnswer = correctAnswer
    }
}
他の言語で使われている構造体と似ています.似ていません.しかし、アプリケーションを構成するには、構造体を熟知しなければならない.MVCデザインモードではさらに必要になります.
Initはコンストラクション関数として機能するため,宣言後,生成時の初期化を上記のように支援することができる.
使用
使用方法:
var quizBrain = QuizBrain()
使用できます.

戻り関数の宣言と使用

 func getQuestionText() -> String {
        return quiz[questionNumber].text
    }
上記のコードに示すようにfuncとして宣言し、->矢印を使用して戻り値を指定します.後で返却値を同じに変更すればいいです.
使用
使用方法:
questionLabel.text = quizBrain.getQuestionText()
このようにラベルを更新するときに使用します.

内部パラメータ、外部パラメータ、mutating

struct QuizBrain {
    var questionNumber = 0
    var scoreNumber = 0
    // _ 외부 매개변수 이름으로 저기에 user을 넣어서 사용할 수 있지만, 
    // 이름의 혼동을 막기 위해 _을 사용하면 그냥 넣어줄 변수의 이름만 넣으면 된다.
    mutating func checkAnswer(_ userChoice: String) -> Bool {
        if userChoice == quiz[questionNumber].correctAnswer {
            scoreNumber += 1
            return true
        } else {
            return false
        }
    }
まずパラメータについてお話ししましょう
パラメータは、関数で使用するために導入された感覚変数です.したがって、関数を使用するときに一緒に加えられる変数です.ただし、パラメータの名前が長すぎたり、同じ名前になったりすると、混乱する可能性があります.このような状況を防止するために、sweetのタグは外部パラメータが宣言名なしで入力されることを許可し、内部パラメータは元の方法で使用することができる.
これはどういう意味ですか.
// 원래 선언
let userGotItRight = quizBrain.checkAnswer(userChoice: userAnswer)

// 외부 매개변수 사용시
let userGotItRight = quizBrain.checkAnswer(userAnswer)
このように、関数の外部で使用する場合は、そのように省略することができます.(外部パラメータ名は設定できません.別の名前を使用できます)

mutating

    // 같은 구조체에 위치하는 let 변수인 questionNumber를 같은 곳에서 수정하려고 하니 에러가 발생했다.
    // 따라서 이 변수를 변경 가능하게끔 만들기 위해선 mutating을 선언하면 된다.
    mutating func checkAnswer(_ userChoice: String) -> Bool {
        if userChoice == quiz[questionNumber].correctAnswer {
            scoreNumber += 1
            return true
        } else {
            return false
        }
    }
上のコードを見てください.関数を宣言するコードの前にキーワードmutatingを追加しました.
このキーワードは、構造体内部で宣言された変数を変更できるキーワードです.
mutatingを追加せずに構造内の変数を任意に変更しようとすると、Xコード自体にエラーが投げ出されます.これは,構造内の変数が本来修正不可能であるためである.したがって,これは突然変異と修正の権限を与えたことに等しい.

MVCデザインモード


他の文字が整理されているので、実際のアプリの様子で勉強してみました.

M(Model)



モデルは、名前の通り、アプリケーション全体のデータと処理を網羅するコード部分です.クイズアプリケーションには、初期化を支援するクイズファイル、クイズ、カウントなどを処理するQuizBrainファイルがあります.

V(View)



ビューは、ユーザーインタフェースを管理する場所です.このため、ストーリーボードはその中にあり、ユーザが望む情報を直感的に表示することができる.

C(Controller)



コントローラは,ユーザがユーザインタフェースで選択した情報をモデルに委任して処理し,処理後の情報をビューに返信する.実はここがメインです.モデルの情報がどれだけあるかにかかわらず、コントローラが正常な情報を提供しないか、またはブロックしない場合、アプリケーションは競合によって停止します.アプリケーションの最新情報を更新することは、主に情報を更新する役割を果たします.

に感銘を与える


MVC、外部パラメータ、mutatingなど今回の制作の応用は本当にたくさん学びました.頭にどれだけ残っているかはわかりませんが、今はこんな簡単なアプリが作れます!ますます進歩してきたような気がして、気持ちがいいです.もっと頑張ろう!