热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

当我试图解释nil时,我忽略了什么?-WhatamIoverlookingasIattempttoaccountfornil?

IverereadtheSwiftdocumentationanumberoftimes,butImafraidImoverlookingsomethingsimp

I've reread the Swift documentation a number of times, but I'm afraid I'm overlooking something simple here.

我已经多次阅读了Swift文档,但恐怕我忽略了一些简单的东西。

The function below processes just fine and properly calls the updateCalorieBalance method if there is value in the field caloriesConsumed.text. But, of course, crashes if caloriesConsumed.text is nil.

下面的函数可以很好地调用updateCalorieBalance方法,如果字段中有值的话。但是,当然,如果消耗了卡路里,就会崩溃。文本是零。

The error message I get is: fatal error: unexpectedly found nil while unwrapping an Optional value.

我得到的错误消息是:致命错误:在展开可选值时意外发现nil。

Your assistance is greatly appreciated.

非常感谢您的帮助。

@IBAction func buttonThree(sender: AnyObject) {

    var calConsumed: String?

    if let calCOnsumed= caloriesConsumed.text {
        calorieCount.updateCalorieBalance(Double(calConsumed)!)
        balanceLabel.text = "New Balance: \(Int((calorieCount.getCalorieBalance())))"
    } else {
        balanceLabel.text = "Please enter calories to add."
    }

    caloriesConsumed.resignFirstResponder()
}

1 个解决方案

#1


1  

calConsumed should not be an optional string. Actually, "if let" creates its own variable so you now have two variables with the same name...

被计算的字符串不应该是可选的字符串。实际上,“if let”创建了它自己的变量,这样就有了两个同名的变量……

Double (calConsumed) returns nil if calConsumed is an empty string or a string not containing a number. The ! that you use will make it crash.

如果caluse是一个空字符串或不包含数字的字符串,则Double (cal消费)返回nil。!你使用的会使它崩溃。

if let calText = caloriesConsumed.text, 
       calNumber = Double (calText) {
    ...
}

(Not tested or even compiled).

(没有测试,甚至没有编译)。


推荐阅读
author-avatar
相信奇迹的发生
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有