【问题标题】:Check Non Optional value for nil检查 nil 的非可选值
【发布时间】:2018-06-20 15:42:14
【问题描述】:

我正在快速创建一个函数来检查如果非可选值返回 nil。我的目标只是处理该异常并避免应用程序因意外的 nil 值而崩溃。

我的班级有两个变量:

// My Class variables
var compulsoryValue: Any!

我不想检查optionalValue 为零。编译器返回 Optional.noneOptional.some 枚举而不是 nil 或某个值。

我的问题:

我面临的问题是我无法检查此值是否为空。至于清空编译器返回none,而对于value,它返回一些在SwiftOptional Enum 中定义的内容。 Implicitly Unwrapped Optional 只是抛出一个错误,而它有一个 nil 值。

我如何检查应该作为非可选值的值 nil?

更新#1:

我的代码:

class myClass {

    var compulsoryValue: Any!

    init() {

          if type(of: compulsoryValue) != Optional<Any>.self {
                // Here I want to check if compulsoryValue is nil so I want to throw an exception
                print("this is not optional: ", compulsoryValue)
            }
    }
}

_ = myClass()

【问题讨论】:

  • 显示您需要帮助的实际代码。
  • 请检查我的代码,我想在它为 nil 时抛出异常,这应该是非可选值。
  • 为什么需要这个?当变量仍然为 nil 时,任何尝试使用隐式解包变量都会自动导致异常。无需编写复杂的代码来检查自己。
  • 它没有显示nil 它显示none 并且应用程序因此而崩溃。
  • 如果要查看,请使用if compulsoryValue == nil { // it's nil, do something }

标签: swift exception-handling optional-variables optional-binding


【解决方案1】:
class myClass {

    var compulsoryValue: Any!
    var optionalValue: Any?

    init() {

        let variabless = [compulsoryValue, optionalValue]



        for (_, v) in variabless.enumerated() {

            if(v != nil) { //Or v == nil
                 // Here I want to check if v is nil so I want to throw an exception
                print("this is not optional: ", v)
            }
        }    
    }
}

_ = myClass()

【讨论】:

  • 请不要与可选值混淆,我只想检查var compulsoryValue: Any!,不会被nil check检查。
  • @developer compulsoryValue 怎么不会被nil 检查?声明一个变量non-optional 只是告诉编译器相信你总是会提供一些价值。但它与检查 nil 或 value 无关。
  • 是的,但从某种意义上说,它可以设置为 nil,编译器将设置为 nil。我想检查一下。
  • 是的,这就是上面的回答代码正在做的事情。它会告诉你你的非可选变量是否为 nil。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-25
  • 2018-11-30
  • 1970-01-01
相关资源
最近更新 更多