16

我正在开发一个 iPhone 应用程序,我需要使用它JSON来从服务器接收数据。在 iPhone 端,我将数据转换为NSMutableDictionary.

但是,有一个日期类型的数据是空的。

我用下面的句子来读日期。

NSString *arriveTime = [taskDic objectForKey:@"arriveTime"];
NSLog(@"%@", arriveTime);

if (arriveTime) {
    job.arriveDone = [NSDate dateWithTimeIntervalSince1970:[arriveTime intValue]/1000];
}

当到达时间为空时,我如何制作 if 语句。我试过 [arriveTime length] != 0,但我不工作,因为到达时间是一个 NSNull 并且没有这个方法。

4

2 回答 2

39

NSNull实例是一个单例。您可以使用简单的指针比较来完成此操作:

if (arriveTime == nil) { NSLog(@"it's nil"); }
else if (arriveTime == (id)[NSNull null]) { // << the magic bit!
  NSLog(@"it's NSNull");
}
else { NSLog(@"it's %@", arriveTime); }

isKindOfClass:或者,如果您发现更清楚,您可以使用:

if (arriveTime == nil) { NSLog(@"it's nil"); }
else if ([arriveTime isKindOfClass:[NSNull class]]) {
  ...
于 2011-09-26T06:45:44.070 回答
-2

在一行中

arriveTime ? job.arriveDone = [NSDate dateWithTimeIntervalSince1970:[arriveTime intValue]/1000]; : NSLog(@"Arrive time is not yet scheduled");
于 2011-09-26T06:49:10.957 回答