检查 nil 的非可选值
Posted
技术标签:
【中文标题】检查 nil 的非可选值【英文标题】:Check Non Optional value for nil 【发布时间】:2018-06-20 15:42:14 【问题描述】:我正在快速创建一个函数来检查如果非可选值返回 nil。我的目标只是处理该异常并避免应用程序因意外的 nil 值而崩溃。
我的班级有两个变量:
// My Class variables
var compulsoryValue: Any!
我不想检查optionalValue
为零。编译器返回 Optional.none
或 Optional.some
枚举而不是 nil
或某个值。
我的问题:
我面临的问题是我无法检查此值是否为空。至于清空编译器返回none
,而对于value
,它返回一些在Swift
Optional 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
。
【参考方案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。以上是关于检查 nil 的非可选值的主要内容,如果未能解决你的问题,请参考以下文章