2

Je dois afficher une vue de table groupée à partir des données ci-dessous. Je dois catégoriser le tableau ci-dessous basé sur "account_type". Par exemple: Je dois afficher l'en-tête de la section Table "Économies" et répertorier tous les comptes de type épargne, puis obtenir des types de compte uniques et les attribuer comme en-tête de section et numéros de compte dans les lignes de tableau. Je suis capable d'obtenir des en-têtes de section en utilisant NSSet, mais comment obtenir le nombre de lignes et l'afficher dans un UITableView.NSMutableArray tri et affichage dans UITableView

<__NSArrayM 0x7f8ef1e8b790>(
{ 
"account_no" = 123; 
"account_type" = Savings; 
}, 
{ 
"account_no" = 123456; 
"account_type" = Savings; 
}, 
{ 
"account_no" = 00000316; 
"account_type" = "DPN STAFF NON EMI"; 
}, 
{ 
"account_no" = 1000000552; 
"account_type" = "DPN STAFF EMI LOANS"; 
}) 

J'ai besoin pour afficher les données ci-dessus dans UITableView comme

section 0 --- épargne

Ligne 1-123

Row 2 - 123456

section 1 ---> DPN STAFF NON EMI

Ligne 1-00000316

Merci,

AKC

Répondre

2

Vous pouvez également utiliser NSDictionary. Le code ci-dessous a parfaitement fonctionné.

if([arrySelectedDetails count] >0){ 

     grouped = [[NSMutableDictionary alloc] initWithCapacity:arrySelectedAcctDetails.count]; 
     for (NSDictionary *dict in arrySelectedDetails) { 
      id key = [dict valueForKey:@"type"]; 

      NSMutableArray *tmp = [grouped objectForKey:key]; 
      if (tmp == nil) { 
       tmp = [[NSMutableArray alloc] init]; 
       [grouped setObject:tmp forKey:key]; 

      } 
      [tmp addObject:dict]; 

     } 


     typeArray= [[NSMutableArray alloc]init]; 

     for(NSDictionary *groupId in arrySelectedDetails){ 

      if(!([typeArray count]>0)){ 
       [typeArray addObject:[groupId valueForKey:@"type"]]; 

      } 
      else if (![typeArray containsObject:[groupId valueForKey:@"type"]]) { 
       [typeArray addObject:[groupId valueForKey:@"type"]]; 

      } 

     } 
    } 

Alors pour uitableview délégués:

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

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section 
{ 
    return [grouped[[typeArray objectAtIndex:section]] count] 
} 
2

Essayez le code ci-dessous:

NSMutableArray *resultArray = [NSMutableArray new]; 
    NSArray *groups = [arrySelectedAcctDetails valueForKeyPath:@"@distinctUnionOfObjects.account_type"]; 

NSLog(@"%@", groups); 

for (NSString *groupId in groups) 
{ 
    NSMutableDictionary *entry = [NSMutableDictionary new]; 
    [entry setObject:groupId forKey:@"account_type"]; 

    NSArray *groupNames = [arrySelectedAcctDetails filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"account_type = %@", groupId]]; 

    for (int i = 0; i < groupNames.count; i++) 
    { 
    NSString *name = [[groupNames objectAtIndex:i] objectForKey:@"account_no"]; 
    [entry setObject:name forKey:[NSString stringWithFormat:@"account_no%d", i + 1]]; 
    } 
      [resultArray addObject:entry]; 
} 

NSLog(@"%@", resultArray); 

Sortie:

{ 
     "account_no1" = 00000316; 
     "account_type" = "DPN STAFF NON EMI"; 
    }, 
     { 
     "account_no1" = 123; 
     "account_no2" = 123456; 
     "account_type" = Savings; 
    }, 
+0

Salut Abin, Merci pour le code. Cela a fonctionné parfaitement. Mais comment l'afficher en tant qu'en-tête et rangée de section dans un UITableView? –