我是obj-c的新手,需要一些关于此代码的帮助
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"E, d LLL yyyy HH:mm:ss Z"];
NSDate *date = [dateFormatter dateFromString:currentDate];
变量日期不能为零。如何才能使日期=当前时间无法格式化字符串? 我可以使用try / catch吗?如何?
答案 0 :(得分:4)
为什么不检查格式化程序返回的日期,是否为nil指定当前日期?
NSDate *date = [dateFormatter dateFromString:currentDate];
if (!date)
date = [NSDate date];
使用三元运算符(及其gcc扩展名)的1-liner:
NSDate *date = [dateFormatter dateFromString:currentDate]?:[NSDate date];
答案 1 :(得分:0)
可以试试这个:
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"E, d LLL yyyy HH:mm:ss Z"];
NSDate *date = nil;
@try
{
date = [dateFormatter dateFromString:currentDate];
}
@catch (NSException *exception)
{
date = [NSDate date];
}
答案 2 :(得分:0)
这个应该不起作用:
NSDate *date = [dateFormatter dateFromString:currentDate] || [NSDate date];
答案 3 :(得分:0)
你不应该这样做NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
因为自动释放使对象的生命周期不确定。忽略autorelease
并在完成后释放对象。 (如果您不确定:当您将对象提供给已启用retain
的属性时,您会经常看到这样的分配(使用自动释放)