Crie um nsmutableArray usando o NSCalendar
-
27-09-2019 - |
Pergunta
Eu tenho o seguinte problema: preciso criar um NSMutABearray a cada dia da semana após uma data específica.
Isso deve parecer:
- Quinta -feira, 28 de outubro de 2010
- Quinta -feira, 04 de outubro de 2010
- Quinta -feira, 11 de outubro de 2010
- ...
Como eu posso fazer isso? Eu acho que tem algo a ver com o NSCalendar, mas não consigo encontrar a solução certa ... você poderia me ajudar?
Agradeço antecipadamente
Ffraenz
Solução
Essa é uma série infinita; Um NSMutableArray pode realizar apenas uma coleção finita.
De qualquer forma, você precisa apenas de um único membro da série, como 2010-10-28. Para chegar à quinta -feira depois disso, adicione uma semana. Para obter a terceira data da série, adicione uma semana à segunda data ou duas semanas até a primeira data. Ter qualquer membro da série fornece acesso a qualquer outro membro da série.
Se você está começando a partir de uma data que não é o dia da semana certo, obtenha os componentes da data para essa data, adicione a diferença entre o dia correto da semana e o dia da semana que ele tem no dia do mês e converta os componentes da data alterada de volta para um encontro. Essa data estará no dia da semana desejado na mesma semana.
Outras dicas
Ter data real:
NSDate *today = [[NSDate alloc] init];
Para adicionar uma semana:
NSDate *nextDate = [today dateByAddingTimeInterval:60*60*24*7];
Então você pode iterar e criar sua matriz:
NSMutableArray* dates = [[NSMutableArray alloc] init];
NSDate *date= [[NSDate alloc] init];
NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
NSDateComponents *offsetComponents = [[NSDateComponents alloc] init];
[offsetComponents setWeek:1];
for (int i=0;i<10;i++) {
NSDate *nextDate = [gregorian dateByAddingComponents:offsetComponents toDate:date options:0];
[dates addObject:date];
[date release];
date = nextDate;
}
[date release];