Xcode 需要帮助来编写不同的if语句吗

Xcode 需要帮助来编写不同的if语句吗,xcode,segue,uiswitch,Xcode,Segue,Uiswitch,(我)是Xcode的新手 我正在制作这个应用程序,首先我有3个ViewController;每个人都用一个按钮互相交谈:从第一个按钮开始,你点击一个按钮,然后点击第二个按钮,然后继续。问题是:我在第一个viewcontroller中放置了一些开关,它们为第二个viewcontroller执行一个序列,更改标签。第一个viewcontroller有2个按钮-其中一个按钮是开关序列的一部分,另一个按钮用于第三个viewcontroller。现在我的问题是:当我单击第一个viewcontroller上

(我)是Xcode的新手

我正在制作这个应用程序,首先我有3个ViewController;每个人都用一个按钮互相交谈:从第一个按钮开始,你点击一个按钮,然后点击第二个按钮,然后继续。问题是:我在第一个viewcontroller中放置了一些开关,它们为第二个viewcontroller执行一个序列,更改标签。第一个viewcontroller有2个按钮-其中一个按钮是开关序列的一部分,另一个按钮用于第三个viewcontroller。现在我的问题是:当我单击第一个viewcontroller上的第二个按钮时,它工作正常,但是如果单击开关而不是segue的按钮,则应用程序崩溃

Could not cast value of type 'app2.ViewController' (0x103879548) to 'app2.SecondViewController' (0x1038793a0).
2020-02-25 20:43:39.507421+0000 app2[18433:249963] Could not cast value of type 'app2.ViewController' (0x103879548) to 'app2.SecondViewController' (0x1038793a0).
这是我的系列:

if switch1?.isOn == true
              {
              let secondController = segue.destination as! SecondViewController
                secondController.myString1 = "blabla"; ()
正如我所说:它不会干扰应用程序的正常使用,但如果我单击开关,而不是单击segue的按钮,而是单击第三个viewcontroller的按钮,应用程序就会崩溃

Could not cast value of type 'app2.ViewController' (0x103879548) to 'app2.SecondViewController' (0x1038793a0).
2020-02-25 20:43:39.507421+0000 app2[18433:249963] Could not cast value of type 'app2.ViewController' (0x103879548) to 'app2.SecondViewController' (0x1038793a0).
我需要一个方法来写一个条件,如果其他按钮不是点击一个序列,开关应该关闭


非常感谢您的帮助。

您收到的此错误消息意味着
segue.destination
不是
SecondViewController
类型,实际上它似乎是
ViewController
类型。这很可能意味着你必须进入故事板,更仔细地检查:

  • 您的
    segue
    查看其目的地是否为类型
    SecondViewController
  • 脚本标识检查器的自定义类部分,以确保您为相关视图控制器选择了
    模块

  • 上面的答案非常详细,再加上一些上下文/细节

    谢谢您的帮助。我研究了你的建议,但最终真正起作用的是遵循红色按钮的建议,每次代码出错时Xcode都会发送给我们,并建议修复:让secondController=segue.destination as?SecondViewController secondController?.myString1=“blablabla”;()因为我对这一点还不熟悉,我不知道它是什么意思,但它确实起了作用。干得好。而且很有趣!我本以为
    运算符会导致编译时错误和
    仅导致运行时错误。出于好奇,如果您想研究它,那么如果您省略第二个问号,那么它是否仍然会产生编译器错误:
    let secondController=segue.destination as?SecondViewController secondController.myString1=“blabla”;()
    另外,如果你好奇的话,苹果开发者页面上的类型转换是
    as
    ,和
    :您好。是的,没有“?”的错误就在那里。谢谢你的苹果页面提示。