Agregar NSDictionary a otro NSDictionary

87

Tengo uno NSDictionaryy se carga UITableView. Si un usuario se desplaza cada vez más, llamo a la API y extraigo nuevos datos. Estos datos están nuevamente en forma de NSDictionary. ¿Es posible agregar el nuevo NSDictionaryal existente?

Slonkar
fuente

Respuestas:

205

Estás buscando a este chico:

[NSMutableDictionary addEntriesFromDictionary:]

¡Asegúrese de que su UITableViewdiccionario sea un NSMutableDictionary!

Compruébalo aquí

MGA
fuente
9
Sí, pero ¿por qué quiere entradas duplicadas de claves en un diccionario?
Johan Karlsson
2
-[NSDictionary dictionaryByAddEntriesFromDictionary:]Sin embargo, lo que quiero es que no exista tal método en NSDictionary.
DawnSong
Obviamente, es solo una operación de unión de diccionarios, no entradas duplicadas. @JohanKarlsson
DawnSong
3
@DawnSong Simplemente crearía una categoría en NSDictionary si fuera usted con el siguiente método: + (instancetype)dictionaryByAddingEntriesFromDictionary:(NSDictionary *)dictionary { NSMutableDictionary *combinedDictionary = [NSMutableDictionary dictionaryWithDictionary:self]; [combinedDictionary addEntriesFromDictionary:dictionary]; return combinedDictionary; } Perdón por los problemas de formato. StackOverflow no permite el formato de código multilínea amigable en los comentarios.
BigSauce
Creo que la verdadera pregunta es cómo hacer esto SIN objetos mutables intermedios. El principal beneficio de tal cosa (que existe para NSString, por ejemplo) es ser seguro para subprocesos.
Motti Shneor
14

Utilice NSMutableDictionary addEntriesFromDictionary para agregar los dos diccionarios a un nuevo diccionario mutable. A continuación, puede crear un NSDictionary a partir del mutable, pero normalmente no es necesario tener un diccionario no mutable.

Lamidas calientes
fuente
1

¿Su NSDictionary está lleno de otros NSDictionaries? Parece que necesitaría un NSMutableArray al que podría agregar NSDictionaries al final. Suponiendo que puede controlar el flujo de datos que ingresan y no correría el riesgo de duplicados en su matriz, ciertamente podría agregar los datos.

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

Sin ver cómo lo está implementando, no puedo proporcionar ejemplos de código más detallados. Agregar elementos es fácil de hacer, pero sepa que solo se puede hacer con versiones mutables de matrices o diccionarios. Espero que esto ayude un poco.

Bill Burgess
fuente