开发者

Unable to save correct Date using CoreData

I created a CoreData application using the Cocoa Touch Template. I modified the included .xcdatamodel file to have an attribute called 'Date' with datatype of 'Date' and other string attributes.

I use following codes to save data for the 'Date' field:

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...
    }

To show the data in TableView I write following code in cellForRowAtIndexPath: method:

// 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]];

I am really surprised th开发者_开发百科at cell in TableView shows - 01 Jan 1970: Test

I also tried to use NSDateComponents instead of NSDateFormatter so I changed the code for saving date with:

    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]; 

This time surprisingly cell displayed - 60 Mar 2010.

So I get 2 different but wrong values, but am unable to show the correct value which should be - 01 Mar 2010. I am really at loss of ideas on what could be going wrong here.

Can anybody suggest me where can I begin looking? Is there anything wrong with my code? Are there some well recognised issues with saving dates using CoreData?

Looking forward to your replies. Thanks in advance.


In the NSDateFormatter version, the format string should be @"yyyy-MM-dd" (lowercase y and d).

See date formatting patterns: http://unicode.org/reports/tr35/tr35-4.html#Date_Format_Patterns

For the NSDateComponents version, what is the code you used to display the date in the cell?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜