2015-11-09 3 views
0

Когда я пытаюсь преобразовать строку в дату с помощью метода NSDateFormatter dateFromString, приложение падает со значениями Null. Я нашел много ответов и обсуждений по SO, когда dateFromString возвращает значение null, но не может найти ничего о том, как обрабатывать ввод нулевого значения.NSDateFormatter dateFromString on null Значения

Строка, о которой идет речь, анализируется JSON, исходящей от сервера, и пуста - это довольно простое количество времени. Следующий код работает, если дата время имеет значение, но падает на нулевые значения, говоря: NSNull length]: unrecognized selector sent to instance 0x39ab2a70

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSString *starttimestr = feedElement[@"starttime"]; 
NSLog(@"starttimestr%@",starttimestr); 
NSDate *starttime = [dateFormatter dateFromString:starttimestr]; 
NSLog(@"starttime%@",starttime); 

Спасибо за любые предложения.

+0

Почему бы вам не проверить, чтобы увидеть, если его нулевой, прежде чем пытаться отформатировать его? То есть используйте только код форматирования, если у вас действительно есть значение – Flexicoder

+0

Я пробовал различные комбинации следующих, но не мог заставить их работать. if (lasttouchedstr.length == 0), if (@lasttouchedstr), если lasttouchstr == nil) и т. д. Можете ли вы предложить правильный способ тестирования? –

ответ

1

Вы должны проверить, чтобы увидеть, если starttimestr действительно строка или нет:

NSString *starttimestr = feedElement[@"starttime"]; 
if ([starttimestr isKindOfClass:[NSString class]]) { 
    NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 
    [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
    NSLog(@"starttimestr%@",starttimestr); 
    NSDate *starttime = [dateFormatter dateFromString:starttimestr]; 
    NSLog(@"starttime%@",starttime); 
} else { 
    // starttimestr is either `nil` or something other than `NSString` (such as `NSNull`). 
} 
Смежные вопросы