10
votes

Ordre des Allaises Nsdictionnaires

J'ai besoin d'afficher dans un UitailView le contenu d'un NSDictionary renvoyé par une API, en respectant l'ordre des clés.

J'utilise: P>

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
        NSString *key = self.data.allKeys[indexPath.section];
        NSArray *list = self.data[key];
        id data = list[indexPath.row];

        PSSearchCell *cell = [PSSearchCell newCellOrReuse:tableView];

        cell.model = data;

        return cell;
}


2 commentaires

Ces clés qui ne sont jamais commandées. Les dictionnaires n'ont pas de commande.


Dupliqué possible de

4 Réponses :


26
votes

Essayez ceci, xxx

prenez maintenant des valeurs basées sur la touche triée.

EDIT

En ordre alphabétique, essayez ceci, xxx


4 commentaires

Mais je n'ai pas une telle chose que "FOO1", "FOO2" ... Je n'ai pas de chiffres dans mon nom de clé. Mon API Retourne Key = "Cinema" Valeur = Liste de cinéma, clé = "Théâtre", valeur = liste du théâtre, et j'ai besoin de les afficher dans cet ordre: les cinémas d'abord, puis les théâtres.


@ βhargavḯ Je ne veux pas trier ces clés où je veux que les clés soient reçues sans changer de commande. Alors est-ce possible? S'il vous plaît aider.


@ βhargavḯ merci. Son travail pour un ordre numérique pour le dictionnaire :)


Utilisez SortDarrayUsingSelector à la place SortusingSelector




0
votes

J'ai écrit une méthode rapide pour prendre une matrice source (d'objets qui sont tous hors de commande) et un tableau de référence (qui comporte des objets dans une commande souhaitée (et totalement arbitraire)) et renvoie un tableau où les éléments de La matrice source a été réorganisée pour correspondre à la matrice de référence.

- (NSArray *) reorderArray:(NSArray *)sourceArray toArray:(NSArray *)referenceArray
{
    NSMutableArray *returnArray = [[NSMutableArray alloc] init];
    for (int i = 0; i < [referenceArray count]; i++)
    {
        if ([sourceArray containsObject:[referenceArray objectAtIndex:i]])
        {
            [returnArray addObject:[arrReference objectAtIndex:i]];
        }
    }
    return [returnArray copy];
}


0 commentaires

0
votes

Vous avez dit que vous perdiez l'ordre des clés, donc je suppose que vous tirez ces clés d'un Nsarray . Droit? Et dans ce nsarray vous avez les clés commandées comme vous le souhaitez. Et je vois aussi que les objets du Nsdictionner sont des tableaux , non? Oui. Donc, dans votre Array commandé Vous avez plus de tableaux.

DATA est le nom du NSDictionary.

Donc, tout ce que vous avez à faire est Pour apporter ce Nsarray (celui qui est commandé comme vous le souhaitez toujours) dans ce fichier .m et après cela, utilisez un code génial dans votre CellfrowrotindexPath . Vous pouvez le faire en procédant comme suit: xxx

et c'est tout ce que vous devez faire pour garder la commande que vous souhaitez utiliser un NSDictionary et NSARRAY.

Pour le visualiser mieux, dans le cas où votre tableau commandé ne contient que des chaînes, ce serait comme suit: xxx

espère qu'il aide.


0 commentaires