1

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

在以下代码中 [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 -> (null)

顺便说一句 - 一旦我把它解析为一个字符串,我将更改日期格式。第一件事首先...

4

2 回答 2

1

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

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

调试

于 2013-10-09T19:44:42.980 回答
0

代码是对的,[ri EventDate]可能是 a NSString,如果你NSLog()是 a 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]];
于 2013-10-09T19:31:00.963 回答