16

私はiPhoneアプリケーションを開発しています。このアプリケーションを使用JSONして、サーバーからデータを受信する必要があります。iPhone側では、データをに変換しますNSMutableDictionary

ただし、データ型がnullの日付型があります。

私は次の文を使って日付を読みます。

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

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

ArrivateTimeがnullの場合、ifステートメントを作成するにはどうすればよいですか。[arriveTime length]!= 0を試しましたが、arriveTimeが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 に答える