Ajout de NSDictionary à un autre NSDictionary


87

J'en ai un NSDictionaryet il se charge UITableView. Si un utilisateur fait défiler de plus en plus, j'appelle l'API et je tire de nouvelles données. Ces données sont à nouveau sous la forme d'un fichier NSDictionary. Est-il possible d'ajouter le nouveau NSDictionaryà l'existant?

Réponses:


205

Vous cherchez ce gars:

[NSMutableDictionary addEntriesFromDictionary:]

Assurez-vous que votre UITableViewdictionnaire est un NSMutableDictionary!

Vérifiez-le ici


9
Oui, mais pourquoi voulez-vous des entrées dupliquées de clés dans un dictionnaire?
Johan Karlsson

2
Ce que je veux -[NSDictionary dictionaryByAddEntriesFromDictionary:], cependant, c'est qu'il n'y ait pas une telle méthode dans NSDictionary.
DawnSong

De toute évidence, il ne s'agit que d'une opération d'union de dictionnaires, pas d'entrées en double. @JohanKarlsson
DawnSong

3
@DawnSong Je créerais simplement une catégorie sur NSDictionary si j'étais vous avec la méthode suivante: + (instancetype)dictionaryByAddingEntriesFromDictionary:(NSDictionary *)dictionary { NSMutableDictionary *combinedDictionary = [NSMutableDictionary dictionaryWithDictionary:self]; [combinedDictionary addEntriesFromDictionary:dictionary]; return combinedDictionary; } Désolé pour les problèmes de formatage. StackOverflow n'autorise pas le formatage convivial du code multiligne dans les commentaires.
BigSauce

Je pense que la vraie question est de savoir comment faire cela SANS objets intermédiaires mutables. Le principal avantage d'une telle chose (qui existe pour NSString, par exemple) est d'être thread-safe.
Motti Shneor

14

Utilisez NSMutableDictionary addEntriesFromDictionary pour ajouter les deux dictionnaires à un nouveau dictionnaire mutable. Vous pouvez ensuite créer un NSDictionary à partir de celui mutable, mais il n'est généralement pas nécessaire d'avoir un dictionnaire non mutable.


1

Votre NSDictionary est-il plein d'autres NSDictionaries? Il semble que vous ayez besoin d'un NSMutableArray auquel vous pourriez ajouter des NSDictionaries à la fin. En supposant que vous puissiez contrôler le flux de données entrant et que vous ne courriez pas le risque de doublons dans votre tableau, vous pourriez certainement ajouter les données.

NSMutableArray *array = [[NSMutableArray alloc] init];
arrayCount = [array count]; // check the item count
[array addObject:dictToAppend];

Sans voir comment vous l'implémentez, je ne peux pas fournir d'exemples de code plus détaillés. L'ajout d'éléments est facile à faire, mais sachez que cela ne peut être fait qu'avec des versions mutables de tableaux ou de dictionnaires. Espérons que cela aide un peu.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.