2014-01-13 132 views
0

我遇到了将我的日期从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我得到一个空值。

我的其他值,即整数或字符串回来就好了。

任何想法?

+0

请显示dateStr的NSLog输出 –

+1

您不需要强制转换'-insertNewObjectForEntityForName:inManagedObjectContext:'的结果。该调用返回一个“id”。 –

+0

您还有一个名为'Important'的重要日期属性。我会**强烈**推荐你重命名。 'id'是一个保留字。 –

回答

0

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

它看起来在你的字典中包含以下格式的日期。

"yyyy-MM-dd" 

但你的日期格式(即用于在这些字符串阅读)是

"dd-mm-yyyy" 

这可不行,所以你返回的日期是nil。请勿分别在Mm之间的差异数月和数分钟。