从Core Data中提取日期

时间:2014-01-13 16:37:22

标签: objective-c core-data nsdate nsdateformatter

我遇到问题从CD中取出日期。

NSDateFormatter *formatter = [[NSDateFormatter alloc]init];
[formatter setDateFormat:@"dd-mm-yyyy"];
NSString *dateStr;
NSLog(@"%@",datesDictionary);
for (NSDictionary *diction in datesDictionary) {
    if ([diction objectForKey:@"date"] ) {
        ImportantDate *newDate = (ImportantDate *)[NSEntityDescription insertNewObjectForEntityForName:@"ImportantDate" inManagedObjectContext:_managedObjectContext];
        newDate.id = [NSNumber numberWithInt:[NSLocalizedString([diction objectForKey:@"id"], nil) intValue]];
        dateStr = NSLocalizedString([diction objectForKey:@"date"], nil);
        NSLog(@"dateStr: %@",dateStr);
        newDate.date = [formatter dateFromString:dateStr];
        NSLog(@"Date: %@",newDate.date);
        newDate.dayOfTheWeek = NSLocalizedString([diction objectForKey:@"dayOfTheWeek"], nil);
        newDate.eventType = NSLocalizedString([diction objectForKey:@"eventType"], nil);
    }
}

在我的代码中,当我正在记录dateStr时,它记录得很好。但是当我记录newDate.date时,我得到一个空值。

我的其余值,即整数或字符串都可以恢复正常。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

您的问题是日期格式化程序。它必须对应于字典中传递的字符串。

您的词典中似乎包含以下格式的日期。

"yyyy-MM-dd"

但是你的日期格式化程序(用于读取这些字符串)是

"dd-mm-yyyy"

这不起作用,因此您的返回日期为nil。请分别在Mm之间区分数月和分钟。