如何在场景转换尝试中处理"无场景"?

Con*_*sed 2 sprite-kit skscene swift

在一个应该加载一个场景的按钮中,我试图学习使用aa guard语句,但是它在四个"逃脱"中的每一个中都做了很多的困惑.并且不知道在处理没有场景的情况时我应该做些什么.

这是正确的用在这里: continue,return,breakthrow

而且......为什么?

override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {

    for touch: AnyObject in touches {

        let location = touch.location(in: self)

        if self.rr.contains(location) {
            guard let nextScene = goesTo
                else {print(" No such Scene ")
                continue } // continue, return, break, throw !!!!????
            loadScene(withIdentifier: nextScene)
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

Fay*_*007 5

我不认为风景适合警卫声明,因为你有很多情况下循环,你想避免一些情况!首先,我们需要知道何时应该使用保护声明.是的,它可以帮助您处理错误,但这并不意味着您应该随时随地使用它!

为什么要警惕以及何时使用它们而不是使用它们:

斯威夫特的守卫声明

更新

我希望这能澄清你的问题

当你使用休息时

let array: [Int?] = [3, 7, nil, 12, 40]

for arrayValue in array {

    guard let value = arrayValue else {
        print("No Value")
        break
    }

    print(value)
}
Run Code Online (Sandbox Code Playgroud)

产量

3

7

没有价值

当你使用继续

let array: [Int?] = [3, 7, nil, 12, 40]

for arrayValue in array {

    guard let value = arrayValue else {
        print("No Value")
        continue
    }

    print(value)
Run Code Online (Sandbox Code Playgroud)

产量

3

7

没有价值

12

40

返回将关闭该函数,并且在这种情况下将与中断相同.现在请根据您的需要做出决定!如果您认为在没有场景条件时可以打破它,那么中断或者如果您想跳过它,那么只需跳过那个确切的场景继续.我希望你明白我的观点