1. MVC 디자인 패턴 이해
-복잡한 앱을 빌드할 수 있도록 설계 개념을 이해해야 한다.
-디자인 패턴은 코드를 체계적으로 구성하고 더 나은 방식으로 구성하는 데 도움을 준다.
-MVC는 Model.View.Controller의 약자로 앱을 세 가지 역할로 구분한 개발 방법론이다.
-사용자가 Controller를 조작하면 Controller는 Model을 통해서 데이터를 가져오고 그 정보를 바탕으로 시각적인 표현을 담당하는 View를 제어해서 사용자에게 전달하게 된다.
2. MVC 구현 및 매개 변수 이름 이해
-Question struct 파일을 우클릭하고 new group from selection을 클릭 후 이름은 model로 변경
-> 메인 스토리보드, 뷰 컨트롤러도 각각 view와 controller로 변경.
-> 모든 일들을 뷰 컨트롤러에서 하고 있기 때문에 분할이 필요하다. 모델 폴더를 우클릭 하고 새로운 스위프트 파일을 QuizBrain 이름으로 만든다.
-> 퀴즈 브레인 파일 내에 struct QuizBrain( 뷰 컨트롤러에서 질문들을 모두 잘라오기 )을 작성
-> 변수 questionNumber 잘라오기
-> 뷰 컨트롤러로 돌아가서 변수 quizBrain = QuizBrain( )을 작성
-> IBAction 내에 quizBrain.checkAnswer(userAnswer) 작성
-> 퀴즈 브레인 파일 내에 함수 checkAnswer 작성
3. swift 딥 다이빙 (functions with outputs)
-func getmilk(money: int) -> int { //여기서 화살표와 int는 return arrow와 return type이다.
let change = money - 2
return change
}
4. MVC 설계 패턴을 구현하기 위한 리팩터링
-> 함수 CheckAnswer를 bool 형식으로 변경해준다. -> bool , return true, return false
-> 뷰 컨트롤러로 돌아가서 상수 userGotItRight으로 캡쳐 후 if 조건문을 usergotitright으로 변경
-> 함수를 통해 퀘스천 라벨을 순서대로 변경할 수 있도록 만들고 싶다. 새로운 함수 getquestiontext를 반환값 string으로 놓고 return quiz[questionnumber].text 작성
-> 위와같은 방법으로 진행률 막대기도 수정한다.
-> questionNumber를 올려주는 조건문도 퀴즈 기능의 종류이기 때문에 퀴즈 브레인 내에 있어야 한다.
func nextQuestion() {
잘라넣기
}
5. 스위프트 딥 다이빙 (Immutability)
-Immutability는 let과 같이 불변
mutable은 var와 같이 가변적
-메서드 앞에 mutating 으로 마킹을 하면 self가 var 처럼 동작하고, 구조체 내부에서 구조체의 property를 자유롭게 변경할 수 있다.
-만약 mutating(돌연변이)로 정의했지만 구조체를 부르는 mytown을 상수로 정의한다면 mutating이 될 수 없다.
6. 돌연변이 함수를 이용해서 점수를 추적한다.
-score 라벨을 새로 만들고, 사용자가 퀴즈를 맞출 때 마다 score가 하나씩 증가하며, 모든 퀴즈가 끝나면 다시 score를 0으로 되돌리는 것이 목표다.
-IBOulet으로 score 라벨을 연결, 함수 updateui 내에 scoreLabel.text = "score = /( quizbrain.getScore() )" 를 작성
-> 퀴즈 브레인으로 들어가서 변수 score = 0 을 만들고, 함수 checkanswer 조건문에 score += 1 을 추가 후 돌연변이로 변경, nextQuestion 함수의 조건문 else에 score = 0을 작성함으로써 재설정
'개린이 이야기' 카테고리의 다른 글
2022년 03월 04일의 이야기 (0) | 2022.03.04 |
---|---|
2022년 03월 03일의 이야기 (0) | 2022.03.03 |
2022년 02월 18일의 이야기 (0) | 2022.02.18 |
2022년 2월 16일의 이야기 (0) | 2022.02.16 |
2022년 02월 11일의 이야기 (0) | 2022.02.11 |