Iphone 通过XML解析设置NSDate属性后使用NSDateFormatter时为空值

Iphone 通过XML解析设置NSDate属性后使用NSDateFormatter时为空值,iphone,null,nsdate,nsdateformatter,Iphone,Null,Nsdate,Nsdateformatter,我正在使用以下代码尝试在表单元格中的某个时间显示 TimeSlot *timeSlot = [timeSlots objectAtIndex:indexPath.row]; NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init]; [timeFormat setDateFormat:@"HH:mm:ss"]; NSLog(@"Time: %@", timeSlot.time); NSDate *mydate = timeSlot.

我正在使用以下代码尝试在表单元格中的某个时间显示

TimeSlot *timeSlot = [timeSlots objectAtIndex:indexPath.row];
NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];
NSLog(@"Time: %@", timeSlot.time);
NSDate *mydate = timeSlot.time;
NSLog(@"Time: %@", mydate);
NSString *theTime = [timeFormat stringFromDate:mydate];
NSLog(@"Time: %@", theTime);
日志输出如下所示:

  • 2010-04-1410:23:54.626MyApp[1080:207]时间:2010-04-14T10:23:54
  • 2010-04-1410:23:54.627MyApp[1080:207]时间:2010-04-14T10:23:54
  • 2010-04-14 10:23:54.627 MyApp[1080:207]时间:(空)
我刚开始为iPhone开发,因为它编译时没有错误或警告,我不知道为什么日志中会出现空值。这个代码有什么问题吗

谢谢

进一步资料

我使用了你答案lugte098中的代码只是为了检查,我得到了日期,这让我相信我的TimeSlot类不能在它的NSDate属性中正确设置日期。所以我的问题变成了-如何从XML设置NSDate属性

我有以下代码(缩写):

谢谢

这可能会有帮助:

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

NSDateFormatter *timeFormat = [[NSDateFormatter alloc] init];
[timeFormat setDateFormat:@"HH:mm:ss"];

NSDate *now = [[NSDate alloc] init];

NSString *theDate = [dateFormat stringFromDate:now];
NSString *theTime = [timeFormat stringFromDate:now];
你需要设置

[timeFormat setDateFormat:@"dd MMMM YYYY"];
以前

NSString *theTime = [timeFormat stringFromDate:mydate];

这一行基于编辑的问题:

您正在将XML中的字符串设置到
时隙
对象中
NSDateFormatter
希望得到一个
NSDate
来格式化,所以这就是原始问题失败的原因

因此,您要问的是第二个问题,即如何从NSString创建NSDate。查看文档,您可以使用
dateFromString:
getObjectValue:forString:range:error:
getObjectValue:forString:errorDescription:
。因此:

NSDateFormatter *df = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
currentTimeSlot.time = [df dateFomString:string];

如果是nil,您应该使用一种错误返回方法。

我不是已经在这样做了吗?日期面具是错误的,因为我在玩它,但我已经在这个顺序,不是吗?我是不是漏掉了什么?你给你试试这个密码。。。只要插入那一行。。。然后看看它是否工作……我是说,而不是[timeFormat setDateFormat:@“HH:mm:ss”];试试[timeFormat setDateFormat:@“dd-MMMM-YYYY”];嗨,我试过了,发现错误在其他地方,请看我的补充,谢谢lugte098,我认识到这段代码,这是我过去代码的基础。我知道我把面具弄错了,我会把它改成上面的样子,但这又不起作用了,在我来stackoverflow之前,我把面具弄乱了。这是非常感谢的一点-我正在努力寻找正确的日期面具,但“t”部分也为我解决了这个问题。保罗,干杯!
NSDateFormatter *df = [[NSDateFormatter alloc] init];
[dateFormat setDateFormat:@"yyyy-MM-dd'T'HH:mm:ss"];
currentTimeSlot.time = [df dateFomString:string];