Невозможно сохранить правильную дату с помощью CoreData - PullRequest
1 голос
/ 04 марта 2010

Я создал приложение 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?

Ждем ваших ответов. Заранее спасибо.

1 Ответ

0 голосов
/ 04 марта 2010

В версии NSDateFormatter строка формата должна быть @ "yyyy-MM-dd" (строчные буквы y и d).

См. Шаблоны форматирования даты: http://unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns

Для версии NSDateComponents, какой код вы использовали для отображения даты в ячейке?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...