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?

Odpowiedzi:


205

Szukasz tego faceta:

[NSMutableDictionary addEntriesFromDictionary:]

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

Sprawdź tutaj


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.


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.