Crea un NSMutableArray utilizzando NSCalendar
-
27-09-2019 - |
Domanda
Ho seguente problema:. Ho bisogno di creare un NSMutabeArray con ogni giorno feriale dopo una data specifica
Questo dovrebbe essere simile:
- Giovedi 28 Ottobre, 2010
- Giovedi 4 ottobre 2010
- Giovedi 11 ottobre 2010
- ...
Come posso fare questo? Penso che abbia qualcosa a che fare con NSCalendar, ma non riesco a trovare la giusta soluzione ... Potresti aiutarmi?
Grazie in anticipo
FFraenz
Soluzione
Questa è una serie infinita; un NSMutableArray può contenere solo una collezione finita.
In ogni caso, è necessario solo un singolo membro della serie, come ad esempio 2010-10-28. Per ottenere il Giovedi dopo che, di una settimana. Per ottenere il terzo appuntamento della serie, aggiungi una settimana per la seconda data, o due settimane per la prima data. Avere qualsiasi membro della serie che fornisce l'accesso a qualsiasi altro membro della serie.
Se si parte da una data che non è il giorno della settimana giusta, ottenere i componenti della data per quella data, aggiungere la differenza tra il giorno della settimana corretto e il giorno della settimana che ha al suo giorno del mese, e convertire la data modificata componenti a una data. Tale data sarà quindi il giorno della settimana desiderato nella stessa settimana.
Altri suggerimenti
Per avere data effettiva:
NSDate *today = [[NSDate alloc] init];
Per aggiungere una settimana:
NSDate *nextDate = [today dateByAddingTimeInterval:60*60*24*7];
Quindi è possibile scorrere e creare l'array:
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];