Dołączanie NSDictionary do innego NSDictionary

87

Mam jeden NSDictionaryi ładuje się UITableView. Jeśli użytkownik przewija coraz więcej, wywołuję API i pobieram nowe dane. Te dane są ponownie w postaci pliku NSDictionary. Czy można dodać nowy NSDictionarydo istniejącego?

slonkar
źródło

Odpowiedzi:

205

Szukasz tego faceta:

[NSMutableDictionary addEntriesFromDictionary:]

Upewnij się, że Twój UITableViewsłownik to NSMutableDictionary!

Sprawdź tutaj

MGA
źródło
9
Tak, ale dlaczego chcesz mieć zduplikowane wpisy kluczy w słowniku?
Johan Karlsson,
2
Chcę -[NSDictionary dictionaryByAddEntriesFromDictionary:]jednak, aby w programie nie było takiej metody NSDictionary.
DawnSong
Oczywiście jest to tylko działanie unii słowników, a nie zduplikowane wpisy. @JohanKarlsson
DawnSong
3
@DawnSong Po prostu utworzyłbym kategorię w NSDictionary, gdybym był tobą, za pomocą następującej metody: + (instancetype)dictionaryByAddingEntriesFromDictionary:(NSDictionary *)dictionary { NSMutableDictionary *combinedDictionary = [NSMutableDictionary dictionaryWithDictionary:self]; [combinedDictionary addEntriesFromDictionary:dictionary]; return combinedDictionary; } Przepraszamy za problemy z formatowaniem. StackOverflow nie zezwala na przyjazne formatowanie kodu wielowierszowego w komentarzach.
BigSauce
Myślę, że prawdziwe pytanie dotyczy tego, jak to zrobić BEZ pośrednich zmiennych obiektów. Główną zaletą takiego rozwiązania (który istnieje na przykład w przypadku NSString) jest bezpieczeństwo wątków.
Motti Shneor
14

Użyj NSMutableDictionary addEntriesFromDictionary, aby dodać dwa słowniki do nowego słownika mutowalnego. Następnie możesz utworzyć NSDictionary ze zmiennego, ale zwykle nie jest konieczne posiadanie niezmiennego słownika.

Hot Licks
źródło
1

Czy Twój słownik NSDictionary jest pełen innych słowników? Wygląda na to, że potrzebujesz NSMutableArray, do którego możesz dodać NSDictionaries na końcu. Zakładając, że możesz kontrolować przepływ danych i nie ryzykować duplikatów w swojej tablicy, z pewnością możesz dołączyć dane.

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

Nie widząc, jak to wdrażasz, nie mogę podać bardziej szczegółowych przykładów kodu. Dołączanie elementów jest łatwe, ale wiedz, że można to zrobić tylko za pomocą zmiennych wersji tablic lub słowników. Mam nadzieję, że to trochę pomoże.

Bill Burgess
źródło