NSDateComponents обернут в структуру? - PullRequest
1 голос
/ 19 июля 2011

Я часто использую NSDateComponents в своем приложении. Код длинный, и мне приходится много копировать и вставлять, и когда это происходит в программировании, это признак того, что что-то можно сделать лучше :). Я прочитал отмеченный ответ на этот вопрос и был взволнован:

NSDate получить год / месяц / день

(читать комментарии) Как я могу обернуть их в структуру? Извините, если это действительно вопрос для начинающих, но хорошо ... Я новичок. Или есть другой способ справиться с этим? Спасибо!

Ответы [ 2 ]

3 голосов
/ 19 июля 2011

Вы можете объявить свою структуру следующим образом:

struct DateParts
{
    NSInteger day;
    NSInteger month;
    NSInteger year;
};

Затем назначьте части:

NSDateComponents *components = [[NSCalendar currentCalendar] components:NSDayCalendarUnit | NSMonthCalendarUnit | NSYearCalendarUnit fromDate:[NSDate date]];
DateParts theParts;
theParts.day = [components day];    
theParts.month = [components month];
theParts.year = [components year];
2 голосов
/ 20 июля 2011

Зачем держать их в структуре? Объект NSDateComponents уже содержит всю необходимую информацию, просто передайте ее в вашу программу. Если вы хотите сделать это действительно легко, вы можете добавить логику извлечения компонентов к NSDate в категории. Вот так:

В NSDate + MyComponents.h

@interface NSDate (MyComponents)
-(NSDateComponents *) components: (NSUInteger) unitFlags;
@end

В NSDate + MyComponents.c

@implementation NSDate (MyComponents)
-(NSDateComponents *) components: (NSUInteger) unitFlags {
    return [[NSCalendar currentCalendar] components: unitFlags fromDate: self];
}
@end

Предостережение: Я на самом деле не скомпилировал это, так как сейчас я на работе Проверим логику, когда вернусь домой.

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