2014-01-13 337 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之間的差異數月和數分鐘。