2013-10-09 44 views
1

我确定我错过了一些简单的东西。任何帮助表示赞赏。NSDateFormatter结果为null NSString

在下面的代码[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 - 一旦我得到这个解析为一个字符串,我会改变日期格式。首先第一件事情......

+4

我从来不知道日期记录在这样一个简单的格式。我的赌注是'[ri EventDate]'已经是一个字符串。案件已结案。 – Joe

+0

从NSObject类 - @property NSDate * EventDate; – alockrem

+2

NSObject肯定没有属性EventDate – vikingosegundo

回答

1

您的EventDate已被意外指定了字符串。您需要追踪此作业发生的位置。如果您在确定指定字符串的位置时遇到问题,您可以通过将属性声明为非原子,实现setter并设置条件断点来调试该属性。一旦代码中断,您将有权访问分配了错误值的堆栈跟踪。完成调试

断点条件时请记住删除​​如果原子是必要的,并删除了定制的setter:EventDate != nil && ![EventDate isKindOfClass:[NSDate class]]

Debug

+0

非常感谢。我相信你是对的。我会跟踪并解决这个问题。 – alockrem

+0

确认:NSDate存储为NSString。我不知道这是可能的。强制它成为NSDate后,它按预期工作。再次感谢大家的帮助。 – alockrem

0

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

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

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

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

非常感谢。我相信你是对的。我会跟踪并解决这个问题。 – alockrem