NSDateComponents упаковка - PullRequest
       7

NSDateComponents упаковка

0 голосов
/ 29 февраля 2012

здесь настроено:

NSDateComponents* temporalComponents;

temporalComponents = [theDateComponents copy];  //another component set to todays date.

[temporalComponents setDay:   [temporalComponents day] + (offset * 7)]

если я выведу результат компонентов, это показывает, что дни добавлены правильно, например 21 день.

"<NSDateComponents: 0x6a48820>\n    Calendar Year: 2012\n    Month: 2\n    Day: 49\n    Hour: 13\n    Minute: 12"

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

"<NSDateComponents: 0x6a48820>\n    Calendar Year: 2012\n    Month: 3\n    Day: 20\n    Hour: 13\n    Minute: 12"

сейчас я делаю это, чтобы правильно обернуть дни (и то, что еще нужно обернуть)

NSDate* tempDate = [CURRENTC dateFromComponents:temporalComponents];

temporalComponents2 = [CURRENTC components:unitFlags fromDate:tempDate];

[theDatesArray addObject: temporalComponents2];

есть ли лучший способ?без необходимости идти на свидание, и вернуться к компоненту.Я безуспешно искал лучший путь, возможно, я искал неправильные термины.

1 Ответ

0 голосов
/ 29 февраля 2012

Предусмотренное средство для добавления заданного смещения к заданной дате - использовать NSCalendar dateByAddingComponents:toDate:options:. Итак, вы бы сделали что-то вроде этого:

NSDateComponents *daysToAdd = [[[NSDateComponents alloc] init] autorelease];
daysToAdd.day = 23;

NSDate *derivedData =
      [CURRENTC dateByAddingComponents:daysToAdd
                toDate:sourceDate
                options:NSWrapCalendarComponents];

С неявным предположением, что вы обычно храните вещи как NSDate, с NSDateComponents, являющимся помощником, который позволяет вам манипулировать ими относительно данного NSCalendar.

Так что в вашем случае я не думаю, что вы можете добиться большего, чем вы делаете, потому что вы используете то, что Apple считает помощником в качестве фактического хранилища.

...