que je développe une application pour iPhone et je suis bloqué à ce point:Groupe NSDate semaines et l'ordre du plus récent au plus ancien
je reçois ces données à partir d'un objet:
{
date = "2014-08-04 11:21:26 +0000";
idChallenger = "-1";
index = "-1";
time = "-1";
},
{
date = "2015-07-31 14:50:40 +0000";
idChallenger = 43;
index = "-1";
time = "-1";
},
{
date = "2015-07-31 16:18:57 +0000";
idChallenger = "-1";
index = "-1";
time = "-1";
},
{
date = "2015-07-31 16:19:29 +0000";
idChallenger = "-1";
index = "-1";
time = "-1";
},
{
date = "2015-08-04 15:25:26 +0000";
idChallenger = "-1";
index = "-1";
time = "-1";
}
maintenant Je devrais obtenir toute la date, groupe par semaines et tri du plus récent au plus vieux ...
En ce moment je suis bloqué à comment NSDate de groupe par semaines, le problème commence quand il y a plus d'années dans la date, parce que par exemple le premier élément de la structure est groupé par le dernier élément.
comment puis-je faire? Merci
EDIT:
c'est le code que j'utilise pour groupe par semaine:
NSMutableArray *weekArray = [NSMutableArray array];
for (int i = 0; i<52; i++) {
[weekArray addObject:[NSMutableArray array]];
}
for (int i = 0; i<_array.count; i++) {
NSDictionary *dict = [_array objectAtIndex:i];
NSDate *date = [dict objectForKey:@"date"];
NSCalendar *calendar = [NSCalendar currentCalendar];
NSDateComponents *dateComponents = [calendar components:NSCalendarUnitYear | NSCalendarUnitWeekOfYear fromDate:date];
NSMutableArray *innerArray = weekArray[[dateComponents weekOfYear] -1];
[innerArray addObject:dict];
}
for (int i = 0; i<weekArray.count; i++) {
if ([[weekArray objectAtIndex:i] count] > 0) {
NSNumber *iNum = [NSNumber numberWithInt:i+1];
[_mutableDictionary setObject:[weekArray objectAtIndex:i] forKey:iNum];
}
}
_mutableDictionary est:
31 = (
{
date = "2015-07-31 16:19:29 +0000";
idChallenger = "-1";
index = "-1";
time = "-1";
},
{
date = "2015-07-31 16:19:23 +0000";
idChallenger = "-1";
index = "-1";
time = "-1";
},
{
date = "2015-07-31 16:18:57 +0000";
idChallenger = "-1";
index = "-1";
time = "-1";
},
{
date = "2015-07-31 14:50:40 +0000";
idChallenger = 43;
index = "-1";
time = "-1";
}
);
32 = (
{
date = "2015-08-04 15:25:26 +0000";
idChallenger = "-1";
index = "-1";
time = "-1";
},
{
date = "2014-08-04 11:22:40 +0000";
idChallenger = 43;
index = "-1";
time = "-1";
}
);
31 et 32 sont numéro de la semaine année
Je pense que cela est mauvais pour mon but ...
Après groupe cette NSDate de la bonne manière, il faut avoir une structure qui me permettent de créer la section n dans UITableView pour chaque semaine
Mettez à jour votre question avec votre code pertinent. Montrer une tentative. – rmaddy
Qu'entendez-vous par "groupe"? Mettre celui dans la même semaine dans un autre 'NSArray', un' NSDictionary'? À quoi ressembleront vos données à la fin? – Larme
1) Ne présumez pas 52 semaines dans une année. Une année en compte 53 (la dernière étant partielle bien sûr). 2) Votre besoin de regrouper par année et semaine de l'année, pas seulement la semaine de l'année. – rmaddy