NSDateFormatter导致null NSString

时间:2013-10-09 19:17:54

标签: ios objective-c nsdateformatter

我确定我错过了一些简单的事情。任何帮助表示赞赏。

在以下代码中[ri EventDate] ='2014-02-07';

NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSString *ed = [dateFormatter stringFromDate:[ri EventDate]];
NSLog(@"eventDate: %@ -> %@", [ri EventDate], ed);

结果是:eventDate:2014-02-07 - > (空)

BTW - 一旦我将此解析为字符串,我将更改日期格式。首先要做的事情......

2 个答案:

答案 0 :(得分:1)

您的EventDate被意外分配了一个字符串。您需要跟踪此分配发生的位置。如果在确定为字符串分配的位置时遇到问题,可以通过将其声明为非原子,实现setter然后设置条件断点来调试属性。一旦代码中断,您就可以访问分配了错误值的堆栈跟踪。 如果需要原子,请记得删除nonantomic,并在完成调试后删除自定义setter

断点条件:EventDate != nil && ![EventDate isKindOfClass:[NSDate class]]

Debug

答案 1 :(得分:0)

代码是正确的,[ri EventDate]可能是NSString,如果NSLog()一个NSDate,输出类似于2013-10-09 19:27:30 +0000,而不是2014 -02-02。

您必须先将[ri EventDate]转换为NSDate。例如:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[df setDateFormat:@"yyyy-MM-dd"];

NSDate *date = [df dateFromString:[ri EventDate]];