Iphone 来自字符串崩溃设备的日期
我正在阅读RSS,其中有一个元素:Iphone 来自字符串崩溃设备的日期,iphone,nsdate,Iphone,Nsdate,我正在阅读RSS,其中有一个元素: 周四,2011年4月7日13:37:41+0000 我使用以下代码将收到的字符串转换为NSDate NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease]; [dateFormatter setDateFormat:@"E, d LLL yyyy HH:mm:ss Z"]; // Thu, 18 Jun 2010 04:48:09 -070
周四,2011年4月7日13:37:41+0000
我使用以下代码将收到的字符串转换为NSDate
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"E, d LLL yyyy HH:mm:ss Z"]; // Thu, 18 Jun 2010 04:48:09 -0700
NSDate *date = [dateFormatter dateFromString:[self.currentDate stringByTrimmingCharactersInSet: [NSCharacterSet whitespaceAndNewlineCharacterSet]]];
[item setObject:date forKey:@"date"];
代码在模拟器中运行良好,但在设备上崩溃。原因是NSDate对象保持为零,当我将其添加到字典时,它会使应用程序崩溃
我读了很多关于这个问题的书,但是没有一个解决方案对我有效。我的意思是他们中的很多人都这样做了,但是在模拟器中
感谢您的帮助,
卢卡
…通过以下方法测试格式化程序的行为
[dateFormatter dateFromString:[NSDate date]]
如果不是格式化程序的格式,则意味着您的nsstring是罪魁祸首
你能记录下你要转换的字符串吗?可能是那个人的错
NSLog(@"string is: %@", self.currentDate);
检查两件事以消除模拟器和ios设备之间的差异
可以将原始日期字符串打印到控制台,这样我们可以检查格式是否正确。之所以为nil,是因为日期格式化程序无法解析日期字符串。在将日期添加到数组之前,您应该检查它是否为零,以防万一。这是为日期格式化程序设置本地日期的问题。你能给我解释一下setLocale的功能吗?这是否迫使设备使用美国本地设置,而不是像我这样使用西班牙设置?另外,我是否可以预期其他设备会出现问题?谢谢。LsetLocale只是做本地化。日期格式化程序试图解析“Thu”而不是“Jue”,就像星期四设置语言环境en_US时一样。