static NSDateFormatter总是为nil

时间:2013-03-04 14:34:54

标签: ios cocoa static nsdateformatter

在我的模型对象中,我正在指定一个这样的日期:

static NSDateFormatter *dateFormat = nil;
if (nil == dateFormat) {
    NSDateFormatter *dateFormat = [[NSDateFormatter alloc] init];
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
}

dateCreated = [dateFormat dateFromString:@"2013-03-04 09:16:41"];

我所看到的是dateFormat总是nil;因此,dateCreated设置为nil。不知道怎么去调试这个......

2 个答案:

答案 0 :(得分:10)

问题只是您在static语句中引入了另一个非dateFormat if变量。

试试这个:

static NSDateFormatter *dateFormat = nil;
if (nil == dateFormat) {
    dateFormat = [[NSDateFormatter alloc] init]; // NOT NSDateFormatter *dateFormat = ...
    [dateFormat setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
}

答案 1 :(得分:2)

NSDateFormatter非{n}的原因是static关键字在开头,static关键字只初始化NSDateFormatter nil一次,当您检查NSDateFormatter时稍后在你的代码中,它永远不会是