Question

J'ai le problème suivant:. Je dois créer un NSMutabeArray avec tous les jours après une date spécifique

Cela devrait ressembler à:

  • Jeudi 28 octobre 2010
  • jeudi 04 octobre 2010
  • Jeudi 11 octobre 2010
  • ...

Comment puis-je faire cela? Je pense qu'il a quelque chose à voir avec NSCalendar, mais je ne peux pas trouver la bonne solution ... Pourriez-vous me aider?

Merci d'avance

FFraenz

Était-ce utile?

La solution

C'est une série infinie; un NSMutableArray ne peut contenir une collection finie.

En tout cas, vous avez besoin que d'un seul membre de la série, tels que 2010-10-28. Pour obtenir le jeudi après cela, ajoutez une semaine. Pour obtenir la troisième date dans la série, ajoutez une semaine à la deuxième date, ou deux semaines à la première date. Avoir un membre de la série vous donne accès à tout autre membre de la série.

Si vous commencez à une date qui n'est pas le jour de la semaine à droite, obtenir les composants de date pour cette date, ajoutez la différence entre le jour de la semaine correcte et le jour de la semaine, il a à son jour du mois, et convertir la date modifiée composants dos à une date. Cette date sera alors le jour désiré dans la même semaine.

Autres conseils

Pour avoir la date réelle:

NSDate *today = [[NSDate alloc] init];

Pour ajouter une semaine:

NSDate *nextDate = [today dateByAddingTimeInterval:60*60*24*7];

Ensuite, vous pouvez itérer et créer votre tableau:

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];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top