2017-09-17 2 views
0

J'ai beaucoup cherché mais je suis incapable de trouver la solution, quelqu'un peut-il me guider pour la solution suivante. JSON Données reçues en utilisant la pagination pour page1 et ainsi de suite.Ajouter un titre d'en-tête dans un TableView pour les données JSON reçues en utilisant la pagination

"ErrorCode":null, 
"Message":"Success", 
"Data":[ 
{ 
    "ProductID":1, 
    "ProductName" :"Mango", 
    "ProductCategory" :"Fruits" 
}, 
{ 
    "ProductID":2, 
    "ProductName" :"Banana", 
    "ProductCategory" :"Fruits" 
}, 
{ 
    "ProductID":3, 
    "ProductName" :"Fanta", 
    "ProductCategory" :"Drinks" 
}, 
{ 
    "ProductID":4, 
    "ProductName" :"Pepsi", 
    "ProductCategory" :"Drinks" 
}, 
{ 
    "ProductID":5, 
    "ProductName" :"Carrot", 
    "ProductCategory" :"Vegetables" 
} 

Ci-dessus les données d'échantillon où des fruits quand je défiler vers le haut, en retour, je reçois plusieurs enregistrements en utilisant la pagination, cela est fait correctement et les données montre bien dans un tableview pour tous les enregistrements disponibles comme le montre au dessus.

Mon exigence est, je veux montrer l'en-tête pour chaque catégorie de produit où le titre sera montré comme des fruits par exemple et tous les produits connexes seront montrés sous. J'aurais pu le faire si les données sont reçues tout à la fois, mais quand nous utilisons la pagination alors je ne suis pas sûr que les données de page suivante que je reçois dans une réponse json auront une autre catégorie de produit ou la même chose.

Veuillez préciser si ma question n'est pas claire. J'espère que la personne qui a fait la radiomessagerie sait de quoi je parle.

Merci d'avance.

+0

"J'ai beaucoup cherché mais je n'arrive pas à trouver la solution" Combien de temps avez-vous passé? Une demi-seconde? Si c'est le cas, continuez à chercher. Ou parlez à un ami qui a des connaissances de base sur l'exécution de la recherche avec un moteur de recherche. SO n'est pas un service de recherche. –

+0

Avez-vous besoin du code en Objective C ou swift? – Vinodh

Répondre

1

Déclare une source de données et le filtre self.dataSourceDictionary = [NSMutableDictionary dictionary]; par exemple votre réponse comme ci-dessous (responseDictionary réponse tient JSON)

- (void)catagorizeData:(NSDictionary *)responseDictionary 
{ 
    for (NSDictionary *productDictionary in [responseDictionary objectForKey:@"Data"]) { 
     NSMutableArray *eachCategoryArray = [self.dataSourceDictionary objectForKey:[productDictionary objectForKey:@"productCategory"]]; 
     if (eachCategoryArray == nil) { 
      eachCategoryArray = [NSMutableArray array]; 
      [eachCategoryArray addObject:productDictionary]; 
      [self.dataSourceDictionary setObject:eachCategoryArray forKey:[productDictionary objectForKey:@"productCategory"]]; 
     }else{ 
      [eachCategoryArray addObject:productDictionary]; 
     } 
    } 
} 

Appelez la méthode ci-dessus chaque fois que vous obtenez une réponse pour la pagination. montrent maintenant les données filtrées dans sectionnée tableview comme ci-dessous:

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView 
{ 
    return [self.dataSourceDictionary count]; 
} 

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    NSString *key = [[self.dataSourceDictionary allKeys] objectAtIndex:section]; 
    return [[self.dataSourceDictionary objectForKey:key] count]; 
} 

N.B. Ce code est seulement pour vous donner une idée de base.