致命错误:在使用toInt()解包可选值时意外发现nil

时间:2015-02-06 04:28:32

标签: swift optional

当我运行代码时,我收到标题中的错误。主要问题出现在下面的代码中。我真的不明白发生了什么。我开始(并完成)这个项目,以便在测试期间快速制作一个宾果游戏跟踪器,但显然语法已经改变了。我更喜欢一个简单的解决方法,解释为什么我的解决方案不再起作用。我提供了所有代码,如果没有人重复使用它,我会很感激,但我无法阻止你。谢谢你的帮助。

if ((newCardB1?.text.toInt()) != nil) // this is not nil
    {
        println(newCardB1?.text); // this prints out "Optional("1") when i run it but i only want the 1
    }
    else
    {
        println("error" );
    }
    let B1: Int = "\(newCardB1?.text)".toInt()!; //this is where the problem starts
    let B2: Int = "\(newCardB2?.text)".toInt()!;
PS:我对swift的编程经验有限,但Java很多。任何关于来回切换的提示也将受到赞赏,并随时陈述任何其他问题或错误的编码技术,以便我能够解决它们。

1 个答案:

答案 0 :(得分:0)

让B1:Int =“(newCardB1?.text)”。toInt()!; 类型的所有语句更改为此模板:让B1:Int =(newCardB1 ?的.text)!toInt()!即可。原因是:newCardB1?.text已经是一个字符串。如果使用“()”进行插值,我不知道它到底在哪里。还要注意! in(newCardB1?.text)!没有它,代码将无法编译。

关于你的风格,很明显你来自Java。 Swift中很少需要分号。除此之外风格很好。也许有点冗长。