Calling a method only once in an updateScore function in SpriteKit This works fine, but obviously it's messy and I'm thinking there has to be a better way to do this. Having to constantly remember to flip the bool back is a pain, is there anything else I can do here?  I take it SpriteKit itself doesn't have any convenience method for calling something only once for example.

func updateScore() {

        // MARK: Increase Difficulty
        switch score {
        case 0:
            if !levelToggle {
                showLevelGraphic(1)
                levelToggle = true
            }
        case 1:
            levelToggle = false
        case 5:
            if !lighteningToggle {
                GameEffects.lightening(self, masterNode: worldNode, backgroundStringName: "background")
                GameEffects.lightening(self, masterNode: worldNode, backgroundStringName: "foreground")
                GameEffects.shakeScreen(worldNode)
                lighteningToggle = true
            }

            if !rainToggle {
                makeItRain()
                rainToggle = true
            }
            break
        case 6:
            lighteningToggle = false
        case 10:
            if !rotateToggle {
                GameEffects.rotateScreenAndHold(worldNode, finishAngle: 0.06, totalEffectDuration: 5.0)
                rotateToggle = true
            }
        case 15:
            rotateToggle = false
        case 16:
            if !rotateToggle {
                GameEffects.rotateScreenAndHold(worldNode, finishAngle: -0.06, totalEffectDuration: 5.0)
                rotateToggle = true
            }
             break
        case 17:
            rotateToggle = false
        case 20:
            stopRaining()
            rainToggle = false
        case 25:
            if !rotateToggle {
                GameEffects.rotateScreenAndHold(worldNode, finishAngle: -0.06, totalEffectDuration: 10.0)
                rotateToggle = true
            }
        case 26:
            rotateToggle = false
        case 45:
            break
        case 50:
            if !levelToggle {
                showLevelGraphic(2)
                levelToggle = true
            }
            kGroundSpeed = 200
            break
        case 55:
            if !zoomToggle {
                GameEffects.zoomIn(worldNode)
            }
        case 56:
            zoomToggle = false
        case 70:
            if !rotateToggle {
                GameEffects.rotateScreenAndHold(worldNode, finishAngle: 0.06, totalEffectDuration: 10.0)
                rotateToggle = true
            }
First,  use properties,  they are your best friend

var rotateToggle = false
{
    didSet
    {
        if(rotateToggle)
        {
            GameEffects.rotateScreenAndHold(worldNode, finishAngle: -0.06, totalEffectDuration: 5.0)
        }
        else
        {
            //if you need something on false, do it here
        }
    }
}


do this for all of your other toggles.

Update for score property:  

var score : UInt = 0
{
    didSet
    {
        updateScore()
    }
}


Now we have your case statement, chain them together

switch (score)
{
    case 0:
      levelToggle = true
    case 1:
      levelToggle = false
    case 10,16,25:
      rotateToggle = true
//...etc
}


of course, how you have toggle set up, this requires score increases by 1, and updateScore gets fired afterwards before score can increase by 1 again.