NSDateFormatter dateFromString on null值

时间:2015-11-09 15:11:46

标签: ios objective-c nsdateformatter unrecognized-selector

当我尝试使用NSDateFormatter dateFromString方法将字符串转换为日期时,应用程序会在Null值上崩溃。我已经找到了很多答案和讨论,当dateFromString返回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);

感谢您的任何建议。

1 个答案:

答案 0 :(得分: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`).
}