Angela Yu Course Part 9 (up to lesson 103)

So the plan is to complete this app today - the Quizzler! Like I've said before, this template could easily be adapted. Once it's done, I could use it for F1 questions, GoT...anything! So being able to understand each step, as well as the object oriented programming being clarified, there have been lots of positives. Here we go!

Init the First Question

let firstQuestion = allQuestions.list[0]

I figured out that this must be the 0 index with that format. Makes sense!

uestionLabel.text = firstQuestion.questionText
        
Having the class makes a huge difference to the simplicity of the code!

OK, the tag system makes a lot fo sense. Grouping together several buttons and putting in the tags of 1, 2 etc. That would have been useful for the Yahtzee buttons for each option to click. Anyway, that's something to play around with another time. 

func checkAnswer() {
        
        let correctAnswer = allQuestions.list[0].answer
        
        if correctAnswer == pickedAnswer {
            
            print("You got it!")
            
        } else {
            print("Wrong!")
        }
        
    }
   
How to Progress Through the Question Bank

 var questionNumber: Int = 0

So this is a great way of keeping track of something, whether it's the level one is on, the score, or in this case - the question number!

Using += 1 - that is the best way of adding on one! Not ++. Swift removed the ++ for some reason. But never mind!

OK - challenge was to try to figure out what to do when the questions were up - I failed. Tried a few things but they did not work. 

Using the Xcode Debug Console

Right, so using the debug console, using the debug area is important here. You can print the question number here, to establish the value. This is 13. OK so I was actually close, just some of the order of things. Encouraging!

How to Implement UIAlertController

Here is how it looks:


Whenever you see the word 'in', you should also use the word 'self'. Not for for-in loops though!

This is linked to CLOSURES. We'll come back to this apparently. 

let alert =  UIAlertController(title: "Complete!", message: "You have finished all of the questions. Do you want to play again?", preferredStyle: .alert)
            
            let restartAction = UIAlertAction(title: "Restart", style: .default, handler: { (UIAlertAction) in self.startOver()
        })
            
            alert.addAction(restartAction)
            
            present(alert, animated: true, completion: nil)
        }
    }

This is REALLY useful stuff! It seems of huge importance to have these action buttons in the code - especially for restarting etc. The code is complex so I'm not going to worry about memorising the syntax!

I'm still going for more complex solutions rather than simpler ones - repeating myself. Remember DRY!

High Level Overview

This was all fine. 

Track Progress and Score

I haven't typed anything here but lots of logic and problem solving - very rewarding!



UPDATING score in the code so it resets to 0 every time - already done my friend!

Incorporating Objective C code into Swift

OK, so this is to get pop ups to show if they got an answer right or wrong!

We're going to use a code library - we can access this for free basically. 

HUD - Head Up Display

So I've copied over the files - no problem. I've included the 'bridging' option too. 

I've also created an alteration - randomised messages for the correct/wrong answers! I posted this in the questions as am proud of it! 

Well that is all for now. Lots learned but gotta go!


Comments

Popular posts from this blog

*Xcode Project Entry 2* F1 Quiz - part 1

Angela Yu Course Part 10 (up to lesson 112)

Angela Yu Xcode 12 Course - Part 7 (lectures 74 to 79)