Как сделать оператор if с помощью NSNull в objective-c
Я разрабатываю приложение для iPhone, в котором мне нужно использовать JSON
для получения данных с сервера.
На стороне iPhone я конвертирую данные в NSMutableDictionary
.
Однако данные типа даты имеют значение null.
Я использую следующее предложение для чтения даты.
NSString *arriveTime = [taskDic objectForKey:@"arriveTime"];
NSLog(@"%@", arriveTime);
if (arriveTime) {
job.arriveDone = [NSDate dateWithTimeIntervalSince1970:[arriveTime intValue]/1000];
}
Когда returnTime равно null, как я могу сделать оператор if. Я попробовал [incomingTime length]!= 0, но я не работаю, потому что returnTime является NSNull и не имеет этого метода.
Ответы
Ответ 1
экземпляр NSNull
является одноэлементным. вы можете использовать простое сравнение указателей для этого:
if (arriveTime == nil) { NSLog(@"it nil"); }
else if (arriveTime == (id)[NSNull null]) { // << the magic bit!
NSLog(@"it NSNull");
}
else { NSLog(@"it %@", arriveTime); }
альтернативно, вы можете использовать isKindOfClass:
, если вы найдете это более ясным:
if (arriveTime == nil) { NSLog(@"it nil"); }
else if ([arriveTime isKindOfClass:[NSNull class]]) {
...
Ответ 2
В одной строке
arriveTime ? job.arriveDone = [NSDate dateWithTimeIntervalSince1970:[arriveTime intValue]/1000]; : NSLog(@"Arrive time is not yet scheduled");