swift - 如何检查日期是否为零?

标签 swift

我有一个 class name Person 具有以下 setter 和 getter。

private var _signedDate:Date? = nil
var signedDate:Date {
    get {
        return _signedDate!
    }
    set (newDate) {
        _signedDate = newDate
    }
}

因为我有一个变量“signedDate”——我想做一个检查函数来让一个人知道他是否已经签名。因此,为此,我正在考虑编写这样的函数:

func hasSigned() -> Bool {
    if signedDate {
        return true
    }
    return false
}

现在编译器给我以下错误:

'Date' is not convertible to 'Bool'.

在 Obj-C 中,我们可以简单地检查特定变量的 nil。但是对于 Swift 来说,这已经改变了。

我该怎么办?

对于 String 的情况,有一个方法:isEmpty()。但是 Date 没有这样的方法。

最佳答案

在您的代码中,您不能总是在访问 signedDate 时强制解包 _signedDate,因为如果 _signedDate 为 nil,它将引发运行时错误。

要么在 _signedDate 为 nil 时为 signedDate 设置默认值,要么将 signedDate 公开为 Date 类型?.

可以使用以下方法检查日期是否为 nil:

func hasSigned() -> Bool {
    if _signedDate == nil {
        return false
    }
    return true
}

提供默认日期(如果有意义的话):

private var _signedDate:Date? = nil
var signedDate:Date {
    get {
        return _signedDate ?? Date() // or some valid date
    }
    set (newDate) {
        _signedDate = newDate
    }
}

关于swift - 如何检查日期是否为零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43703525/

相关文章:

ios - SKScene 不会取消初始化

ios - 基本 Swift 3 应用程序因 Firebase 崩溃

ios - 系统字体在 UIButton 属性标题上消失

iphone - 如何使用 swift 更改 UICell 上字母和线条之间的间距

ios - Apple FFT 给出不一致的结果

swift - 如何使用 MDCSnackbarMessage 完成处理程序?

Swift/在导航栏上的后退按钮上设置白色背景

ios - 使用 xCode 7.3 在 swift 2 中从 URL 播放视频文件(mp4 文件)?

ios - CoreData - NSManagedObject 子类的好处

swift - uinavigationcontroller 的异常行为点击 UIButton 抛出异常