【发布时间】:2011-03-13 20:04:59
【问题描述】:
我正在使用以下代码,它在 iPhone OS 3.2 中运行良好
+(NSDate *)NSDateFromString:(NSString *)dateString
{
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setDateStyle:NSDateFormatterShortStyle];
[dateFormatter setTimeStyle:NSDateFormatterShortStyle];
[dateFormatter setDateFormat:@"yyyy-MM-dd"];
NSDate *dateObj=[dateFormatter dateFromString:dateString];
[dateFormatter release], dateFormatter=nil;
return dateObj;
}
但是当我尝试使用与 iPhone OS 4.0 相同的代码时,dateObj 为 nil。
原因是:
NSDateFormatter 的
- (id)init方法仅在 iPhone OS 2.0 到 iPhone OS 3.2 中可用。 它在 iPhone OS 4.0 中已弃用。
现在解决方案是什么?如何初始化 NSDateFormater?有什么办法?
【问题讨论】:
-
我们可以使用 NSDateComponents 将 NSString 转换为 NSDate,例如: NSDateComponents *comps = [[NSDateComponents alloc] init]; [comps setDay:6]; [comps setMonth:5]; [comps setYear:2004]; NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDate *date = [gregorian dateFromComponents:comps]; [comps 发布];
-
但是,现在如何处理 NSDateFormatter ?我们不能将它与 iPhone OS 4.0 一起使用吗?如果是,那么如何?
-
只是因为它已被弃用并不意味着它不会工作 - 它可能在未来无法工作。如果您在调用 init 之后 NSLog(@"%@", dateFormatter); 会得到什么?如果您没有得到 nil,则此警告与您的问题无关。
-
-setDateFormat:调用会覆盖之前的-setDateStyle:和-setTimeStyle:。这两个语句是不必要的。 -
NSDate *dateObj=[dateFormatter dateFromString:dateString];可以做些什么来获得正确的输出而不是“nil”???
标签: iphone nsdateformatter init