Following everyone's advice, I came up with the following, more compact, solution

- (NSDictionary *) dates:(int) inYear
{
        NSMutableDictionary             *result                 = 
[NSMutableDictionary dictionary];
        NSMutableArray                  *days                   = 
[NSMutableArray array];
        
        int                                             startMonth              
= 1;
        
        NSTimeZone                              *tz                             
= [NSTimeZone localTimeZone];

        NSCalendarDate                  *date                   = 
[NSCalendarDate dateWithYear: inYear
                                                                                
                        month: startMonth
                                                                                
                        day: 1
                                                                                
                        hour: 0
                                                                                
                        minute: 0
                                                                                
                        second: 0
                                                                                
                        timeZone: tz];
                                                                                
                        
[result setObject: days forKey: [date descriptionWithCalendarFormat: @"%B"]];
                
        while ([date yearOfCommonEra] == inYear)
        {
                date            = [date dateByAddingYears: 0
                                                        months: 0
                                                        days: 1
                                                        hours: 0
                                                        minutes: 0
                                                        seconds: 0];
                                                                        
                if ([date monthOfYear] > startMonth)
                {
                        days            = [NSMutableArray array];
[result setObject: days forKey: [date descriptionWithCalendarFormat: @"%B"]];
                        startMonth++;
                }
                                                                        
[days addObject: [date descriptionWithCalendarFormat: @"%a %m/%d/%y %I:%M %p"]];
        }
                                                                                
                
        return result;  
}


On Dec 22, 2008, at 12:38 PM, mmalc Crawford wrote:


On Dec 22, 2008, at 9:22 AM, Nathan Vander Wilt wrote:
[Good advice, except:]
NSCalendar can handle overflow, so you can have an NSDateComponent that says something like Year:2008 Month:1 Days:364 and you will get the right date from components.

You should not rely on this behaviour.

mmalc
(With thanks for sage advice to Chris Kane.)

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/kentozier%40comcast.net

This email sent to kentoz...@comcast.net

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to