Манипулирование датами

Я новичок в iOS, и я получаю небольшую проблему, чтобы следить за шаблонами iOS при написании метода. Я пытаюсь найти простой способ увеличить значения в дате, используя цель-c.

Принимая во внимание:

NSInteger incrementType = 1; // from 1 to 4, days, weeks, months, year NSInteger incrementSize = 20 // the increment size NSDate* date = ... // some date +(NSDate*)somename:(NSInteger)incrementSize type:(NSInteger)incrementType current:(NSDate*)date { NSCalendar* gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; NSDateComponents* ateComponents = [[NSDateComponents alloc] init]; // switch [weekdayComponents setMonth:incrementSize]; NSDate* newDate = [gregorian dateByAddingComponents:dateComponents toDate:date options:0]; return newDate; } 

Проблемы:

  1. Я не уверен, правильна ли логика. Я нашел фрагмент кода в stackoverflow, и я пытаюсь его изменить.
  2. Как написать перечисление для параметра incrementType?
  3. Что было бы хорошей подписью?

NSDate меня был такой же вызов, и я создал простую категорию NSDate (используя ARC):

NSDate + Utils.h:

 @interface NSDate (Utils) -(NSDate *)addDays:(NSInteger)days weeks:(NSInteger)weeks months:(NSInteger)months years:(NSInteger)years; @end 

NSDate + Utils.m:

 #import "NSDate+Utils.h" @implementation NSDate (Utils) -(NSDate *)addDays:(NSInteger)days weeks:(NSInteger)weeks months:(NSInteger)months years:(NSInteger)years { NSDateComponents *offsetComponents = [[NSDateComponents alloc] init]; [offsetComponents setDay:days]; [offsetComponents setWeek:weeks]; [offsetComponents setMonth:months]; [offsetComponents setYear:years]; NSCalendar *calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; return [calendar dateByAddingComponents:offsetComponents toDate:self options:0]; } @end 

Я также создал ряд простых методов, которые все вызывают метод выше (с нулями на неиспользуемых компонентах). Их подписи:

 -(NSDate *)addDays:(NSInteger)days; -(NSDate *)addWeeks:(NSInteger)weeks; -(NSDate *)addMonths:(NSInteger)months; -(NSDate *)addYears:(NSInteger)years; 

addDays :

 -(NSDate *)addDays:(NSInteger)days { return [self addDays:days weeks:0 months:0 years:0]; } 

В частности, эти методы устраняют необходимость в вашем перечислении incrementType .

  • AFNetworking кодирует параметр POST в JSON?
  • Получить символ валюты из кодов валют в Objective-C
  • Как сделать четкий текст в ярлыке текстового поля, когда масштабирование включено в scrollview
  • Обновление свойства с включенным ARC
  • executeFetchRequest: ошибка: зависает в основном потоке
  • Создание экземпляра класса, который остается дольше в памяти (при ARC)
  • IOS) Расширение фотографии не удается сохранить изменения
  • IOS, как получить ориентацию устройства при запуске или viewDidAppear
  • Фоновое изображение Изменение UITableView при прокрутке
  • Является ли это допустимым способом отладки проблем параллелизма CoreData?
  • Объявить интерфейс внутри файла реализации (Objective-C)
  • Давайте будем гением компьютера.