Anexando NSDictionary a outro NSDictionary

87

Eu tenho um NSDictionarye ele carrega UITableView. Se um usuário rola mais e mais, eu chamo a API e puxo novos dados. Esses dados estão novamente na forma de um NSDictionary. É possível adicionar o novo NSDictionaryao existente?

Slonkar
fonte

Respostas:

205

Você está procurando por esse cara:

[NSMutableDictionary addEntriesFromDictionary:]

Certifique-se de que seu UITableViewdicionário seja um NSMutableDictionary!

Verifique aqui

MGA
fonte
9
Sim, mas por que você deseja entradas duplicadas de chaves em um dicionário?
Johan Karlsson
2
O que eu quero -[NSDictionary dictionaryByAddEntriesFromDictionary:], no entanto, é que esse método não existe em NSDictionary.
DawnSong
Obviamente, é apenas uma operação de união de dicionários, não entradas duplicadas. @JohanKarlsson
DawnSong
3
@DawnSong Eu apenas criaria uma categoria no NSDictionary se eu fosse você com o seguinte método: + (instancetype)dictionaryByAddingEntriesFromDictionary:(NSDictionary *)dictionary { NSMutableDictionary *combinedDictionary = [NSMutableDictionary dictionaryWithDictionary:self]; [combinedDictionary addEntriesFromDictionary:dictionary]; return combinedDictionary; } Desculpe pelos problemas de formatação. StackOverflow não permite formatação amigável de código de várias linhas nos comentários.
BigSauce de
Acho que a verdadeira questão é como fazer isso SEM objetos mutáveis ​​intermediários. O principal benefício para tal coisa (que existe para NSString, por exemplo) é ser thread-safe.
Motti Shneor
14

Use NSMutableDictionary addEntriesFromDictionary para adicionar os dois dicionários a um novo dicionário mutável. Você pode então criar um NSDictionary a partir do mutável, mas geralmente não é necessário ter um dicionário não mutável.

Hot Licks
fonte
1

O seu NSDictionary está cheio de outros NSDictionaries? Parece que você precisaria de um NSMutableArray ao qual pudesse adicionar NSDictionaries no final. Supondo que você pode controlar o fluxo de entrada de dados e não correr o risco de duplicatas em seu array, você certamente pode anexar os dados.

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

Sem ver como você está implementando, não posso fornecer exemplos de código mais detalhados. Anexar itens é fácil de fazer, mas saiba que isso só pode ser feito com versões mutáveis ​​de Arrays ou Dicionários. Espero que isto ajude um pouco.

Bill Burgess
fonte