首页 > 解决方案 > 我收到一个警告,将我的 OPTIONAL 值与 not-nil 进行比较将始终返回 true

问题描述

我已将名为“JournalEntry”的类型声明为可选类型并将其设置为 nil。然后,当 VC 加载时,我测试以确保在尝试使用对象之前已注入该对象,但我收到一条错误消息,提示“将 'JournalEntry' 类型的非可选值与 nil 进行比较总是返回 true”。

但我将其设置为可选并且为零...

这是代码:

class AddJournalEntryVC: UIViewController, UITextViewDelegate {

    var willEdit:Bool?
    var entryForEdit:JournalEntry? = nil

    override func viewDidLoad() {
        super.viewDidLoad()


        if isEditing {
            guard let entry = entryForEdit, entry != nil else{ //Comparing non-optional value of type 'JournalEntry' to nil always returns true
                return
            }
            dateLabel.text = entry.dateString!
            timeLabel.text = entry.timeString!
            timestamp = entry.timestamp!
        }
    }

我的想法哪里出错了?谢谢你。

标签: iosswiftoptional

解决方案


只需删除该entry != nil子句,它就会按您的需要工作。执行它的if let语句已经执行了非零检查。

guard let entry = entryForEdit else {
    return
}

推荐阅读