致命错误:在使用toInt()解包可选值时意外发现nil
问题描述:
我在运行代码时遇到了标题中的错误。主要问题出现在下面的代码中。我真的不明白发生了什么事。我开始(并完成)这个项目,在测试版中快速制作宾果追踪器,但显然语法有所改变。我想更容易解释为什么我的解决方案无法工作。我提供了我的所有代码,并希望如果没有人重用它,但我不能阻止你。感谢您的帮助。致命错误:在使用toInt()解包可选值时意外发现nil
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。关于来回切换的任何提示也将被赞赏并随意陈述任何其他问题或错误的编码技术,以便我能够修复它们。
答
更改所有类型的语句让B1:Int =“(newCardB1?.text)”toInt()!;对此模板:让B1:Int =(newCardB1?.text)!. toInt()!。原因是:newCardB1?.text已经是一个字符串。如果使用“()”插入它,我不确定它在哪里结束。还要注意! (newCardB1?.text)!没有它的代码将不会编译。
关于你的风格,很明显你来自Java。分号在Swift中很少需要。除此之外,风格很好。也许有点冗长。
+0
谢谢!这似乎修复了它。 – user3743262 2015-02-07 15:40:11
您可以开始删除所有分号和省略类型。 – 2015-02-06 06:01:15