Objective c NSDateFormatter stringFromDate不断返回nil

Objective c NSDateFormatter stringFromDate不断返回nil,objective-c,ios,formatting,nsdateformatter,null,Objective C,Ios,Formatting,Nsdateformatter,Null,我对NSDateFormatter有一个奇怪的问题。当然我在这里做错了什么,但我不知道是什么,一定是一些小而愚蠢的事情 我有一个日期要格式化。日期是2012-05-06 16:52:40,包含在NSDate对象中,它已正确初始化,我在调试器中对此进行了检查 但是,以下代码: NSLog(@"%@", [myDate description]); NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; dateFormatt

我对NSDateFormatter有一个奇怪的问题。当然我在这里做错了什么,但我不知道是什么,一定是一些小而愚蠢的事情

我有一个日期要格式化。日期是2012-05-06 16:52:40,包含在NSDate对象中,它已正确初始化,我在调试器中对此进行了检查

但是,以下代码:

NSLog(@"%@", [myDate description]);
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
dateFormatter.dateFormat = @"dd-MM-yyyy";
NSString *myDateAsString = [dateFormatter stringFromDate:myDate];
NSLog(@"%@", myDateAsString);
印刷品:

2012-05-06 16:52:40
(null)

我真的没有看到代码中的错误。有什么提示吗?

myDate
实际上是一个
NSString
而不是
NSDate
。否则,描述也将包含时区:
2012-05-06 16:52:40+0000

请尝试以下操作以检查:

NSLog(@"%@", [myDate class]);

我们可以看到
myDate
的初始化代码吗?你说得对:)在我的代码中,设置了myDate的值,我没有将传入字符串解析为NSDate对象。但我真正不明白的是为什么编译器没有抱怨?为什么它在调试器中显示为NSDate实例?它在调试器中显示为
NSDate
的实例,因为它是这样声明的。此外,根据您将值分配给
myDate
的方式,编译器可能无法猜测该值是什么类型,并且不会显示警告。类似于
myDate=[array objectAtIndex:0]NSDate
,code>对编译器来说也是可以的。啊,这很有意义。它来自一个已转换为NSDictionary的JSON字符串。Tnx!