Я создал приложение CoreData, используя сенсорный шаблон Cocoa. Я изменил включенный файл .xcdatamodel, чтобы он имел атрибут «Дата» с типом данных «Дата» и другими строковыми атрибутами.
Я использую следующие коды для сохранения данных в поле «Дата»:
NSDateFormatter *dateFormatter=[[[NSDateFormatter alloc] init] autorelease] ;
[dateFormatter setDateFormat:@"YYYY-MM-DD"];
NSDate *date= [[[NSDate alloc] init] autorelease];
date=[dateFormatter dateFromString:@"2010-03-01"];
[newManagedObject setValue:date forKey:@"Date"];
NSError *error;
if (![context save:&error]) {
// Handle the error...
}
Чтобы показать данные в TableView, я пишу следующий код в cellForRowAtIndexPath: метод:
// Configure the cell.
NSManagedObject *managedObject = [fetchedResultsController objectAtIndexPath:indexPath];
//Formatting Date Portion of Name
NSDateFormatter *dateFormatter = [[[NSDateFormatter alloc] init] autorelease];
[dateFormatter setDateFormat:@"DD MMM YYYY"];
NSString *fName= [NSString stringWithFormat: @"%@: %@", [dateFormatter stringFromDate:[managedObject valueForKey:@"Date"]],[[managedObject valueForKey:@"Name"] description]];
Я действительно удивлен, что ячейка в TableView показывает - 01 января 1970: тест
Я также попытался использовать NSDateComponents вместо NSDateFormatter, поэтому я изменил код для сохранения даты с помощью:
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:1];
[comps setMonth:3];
[comps setYear:2010];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:comps];
[comps release];
На этот раз на удивление отображается ячейка - 60 марта 2010 года.
Итак, я получаю 2 разных, но неправильных значения, но не могу показать правильное значение, которое должно быть - 01 марта 2010 года. Я действительно теряю идеи о том, что здесь может пойти не так.
Кто-нибудь может подсказать мне, с чего мне начать искать? Что-то не так с моим кодом? Есть ли какие-то общепризнанные проблемы с сохранением дат с использованием CoreData?
Ждем ваших ответов. Заранее спасибо.