Bonjour,
voila le problème, j'affiche une liste de personne, dans un UITableView, que je récupère via une api en json (pour l'instant sa je gère) cette liste de personne est triée par pays ensuite par région,
l'utilisateur peut choisir dans quelle région il veut afficher ces personnes,
(exemple je veux que tu m'affiches les personnes de France qui habite en Aquitaine),
sa encore pas de soucis car c'est l'api qui me gère la liste, mais au bout d'un moment il n'y a plus de personne en Aquitaine, donc l'api me renvoi la liste des personnes de toute la France en ajoutant une entrée sur ma liste pour m'indiquer que cette personne ne fait plus parti de la recherche demandé.
Voila un exemple de liste que je récupère en json.
(j'ai pas tout mis par anonymat)
On peut voir que c'est un dictionnaire de tableau de dictionnaire, j'enlève le "code = 200" et je met chaque entrée dans un tableau de dictionnaire pour pouvoir les afficher par la suite dans mon UITableView,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 0 = { city = Lyon; "criteria_opened" = O; "first_name" = Christophe; online = Oui; "visit_date" = 20131118; }; 1 = { city = Creutzwald; "criteria_opened" = O; "first_name" = Patrice; online = Oui; "visit_date" = 20131118; }; 2 = { city = Toulon; "criteria_opened" = O; "first_name" = Petr; online = Oui; "visit_date" = 20131118; }; 3 = { city = Maresches; "criteria_opened" = O; "first_name" = Yohann; online = Oui; "visit_date" = 20131118; }; 4 = { city = Serris; "criteria_opened" = O; "first_name" = Weisley; online = Oui; "visit_date" = 20131118; }; code = 200; }
voila mon tableau de dictionnaire
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 { city = Lyon; "criteria_opened" = O; "first_name" = Christophe; online = Oui; "visit_date" = 20131118; }, { city = Creutzwald; "criteria_opened" = O; "first_name" = Patrice; online = Oui; "visit_date" = 20131118; }, { city = Toulon; "criteria_opened" = O; "first_name" = Petr; online = Oui; "visit_date" = 20131118; }, { city = Maresches; "criteria_opened" = O; "first_name" = Yohann; online = Oui; "visit_date" = 20131118; }, { city = Serris; "criteria_opened" = O; "first_name" = Weisley; online = Oui; "visit_date" = 20131118; } )
La photo ne correspond pas trop au tableau par soucis d'anonymat.
mais comme vous le voyez je n'ai personne en Aquitaine donc l'api me dit à chaque entrée "criteria_opened = O" pour m'indiquer que ces personnes ne font pas parti de la région recherché.
Donc mon but est d'afficher une cellule en plus qui dit à l'utilisateur que la recherche par région n'est plus pris en compte, ma démarche a été d'ajouter une entrée sur la table pour m'indiquer à quel endroit je dois afficher ma nouvelle cellule.
tableArray me retourne ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 -(void)BuildArray { // responseObject contient mon dictionnaire de tableau de dictionnaire NSMutableDictionary *tableDico = [[NSMutableDictionary alloc] initWithDictionary:responseObject]; [tableDico removeObjectForKey:@"code"]; // je supprime "code = 200" bool critere = true; for (int i=0; i < tableDico.count; i++) { NSDictionary *d = [[NSDictionary alloc] initWithDictionary:[tableDico valueForKey:[NSString stringWithFormat:@"%d", i]]]; if ([d valueForKey:@"criteria_opened"] && critere) { critere = false; [tableArray addObject:[NSDictionary dictionaryWithObject:@"criteria" forKey:@"opened"]]; } [tableArray addObject:d]; } }
Ensuite dans la methode "cellForRowAtIndexPath:" je teste si à indexPath.row il y a la clé "opened" pour afficher uniquement le texte
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 { opened = criteria; }, { city = Lyon; "criteria_opened" = O; "first_name" = Christophe; online = Oui; "visit_date" = 20131118; }, { city = Creutzwald; "criteria_opened" = O; "first_name" = Patrice; online = Oui; "visit_date" = 20131118; }, { city = Toulon; "criteria_opened" = O; "first_name" = Petr; online = Oui; "visit_date" = 20131118; }, { city = Maresches; "criteria_opened" = O; "first_name" = Yohann; online = Oui; "visit_date" = 20131118; }, { city = Serris; "criteria_opened" = O; "first_name" = Weisley; online = Oui; "visit_date" = 20131118; } )
Mais malheureusement cette cellule s'affiche plusieurs fois dans mon tableau ce qui m'embête beaucoup et je comprend pas pourquoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56 -(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { static NSString *chatTableIdentifier = @"ChatIdentifier"; ChatCell *cell = [tableView dequeueReusableCellWithIdentifier:chatTableIdentifier]; if (cell==nil) { NSArray *omg = [[NSBundle mainBundle] loadNibNamed:@"ChatCell" owner:nil options:nil]; for (id currentObject in omg) { if ([currentObject isKindOfClass:[ChatCell class]]) { cell = (ChatCell *)currentObject; break; } } } if (tableArray==nil) return cell; if ([[tableArray objectAtIndex:indexPath.row] valueForKey:@"opened"]) { cell.textLabel.text = @"La recherche ne prend plus en compte \nvotre région"; [cell.ImageChat setHidden:YES]; [cell.NomChat setHidden:YES]; [cell.DateVisite setHidden:YES]; [cell.VilleChat setHidden:YES]; [cell.AgeChat setHidden:YES]; [cell.OnlineChat setHidden:YES]; [cell setUserInteractionEnabled:NO]; return cell; } NSString *url = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"photo_square_120"]; [[cell ImageChat] setImageWithURL:[NSURL URLWithString:url] placeholderImage:[UIImage imageNamed:@"placeholder.png"]]; cell.NomChat.text = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"first_name"]; NSString *age = [NSString stringWithFormat:@"%@ ans", [[tableArray objectAtIndex:indexPath.row] valueForKey:@"age"]]; cell.AgeChat.text = age; cell.VilleChat.text = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"city"]; NSString *visitDate = [[tableArray objectAtIndex:indexPath.row] valueForKey:@"visit_date"]; visitDate = [NSString stringWithFormat:@"%@/%@/%@", [visitDate substringFromIndex:6], [visitDate substringWithRange:NSMakeRange(4, 2)], [visitDate substringToIndex:4]]; cell.DateVisite.text = visitDate; return cell; }
la photo du problème
N'hésitez pas à demander plus de précision et merci d'avance pour vos réponse.
Partager