检查NSDate是否包含日期或为空。

9

如何判断一个NSDate是否已经设置了日期或为空?返回其描述或将其转换为字符串会返回“(null)”...?

谢谢。

2个回答

24

如果您想查看一个 NSDate 实例(或任何对象)是否为 nil,只需将其与 nil 进行比较。非空的 NSDate 对象永远不会为空;它总是包含一个日期。两者 -init+date 都返回一个初始化为当前日期和时间的 NSDate 对象,并且没有其他方法可以创建此类的实例。

   if(someData == nil) {
      // do stuff
   }

谢谢,我实际上已经尝试过这个方法,但是不知道为什么有些问题,虽然条件是正确的,但我的后续代码出了一些问题。我正在使用检查将不同的数据放入表格单元格中。对我有效的方法是将日期转换为字符串,并检查它是否为“(null)”。令人惊讶的是,这给出了正确的结果。我不知道一个简单的检查如何会影响构建单元格的后续代码。因为除了if条件之外,我没有做任何不同的事情。 - msk
我们需要看到代码才能帮助您。如果没有其他问题,您所说的是不可能的。 - Marc W
Marc,谢谢你,但我实际上已经找出问题所在了。是的,问题与其他事情有关,if条件语句与此关系不大。 :) - msk
Marc...不确定为什么你说非空的NSDate永远不会为空。我现在遇到的情况是,我的核心数据字段被定义为NSDate,当我在LLDB中打印该字段时,它确实显示日期为空,但是当我专门检查是否为空时,它声称不为空。但是,如果我使用isnan(date-in-question)检查日期,我会得到一个结果,说“是的,那不是一个数字”。 - Logicsaurus Rex

8

如果它没有包含一个日期,那么你就有了一个空指针,所以只需要

if (!date) {
    ...
}

更明确地说
if (date == nil) {
    ...
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接