Додавання NSD Dictionary до інших NSD Dictionary


87

У мене є одна, NSDictionaryі вона завантажується UITableView. Якщо користувач прокручує все більше і більше, я викликаю API і витягую нові дані. Ці дані знову мають форму NSDictionary. Чи можна додати нове NSDictionaryдо існуючого?

Відповіді:


205

Ви шукаєте цього хлопця:

[NSMutableDictionary addEntriesFromDictionary:]

Переконайтеся, що ваш UITableViewсловник є NSMutableDictionary!

Перевірте тут


9
Так, але чому ви хочете дублювати записи ключів у словнику?
Йохан Карлссон,

2
Однак я хочу -[NSDictionary dictionaryByAddEntriesFromDictionary:], щоб такого методу в NSDictionary.
DawnSong

Очевидно, що це просто об'єднання словників, а не дублікати записів. @JohanKarlsson
DawnSong

3
@DawnSong Я б просто створив категорію на NSDictionary, якби на вашому місці використовував такий метод: + (instancetype)dictionaryByAddingEntriesFromDictionary:(NSDictionary *)dictionary { NSMutableDictionary *combinedDictionary = [NSMutableDictionary dictionaryWithDictionary:self]; [combinedDictionary addEntriesFromDictionary:dictionary]; return combinedDictionary; } Вибачте за проблеми з форматуванням. StackOverflow не допускає дружнього багаторядкового форматування коду в коментарях.
BigSauce

Я думаю, що справжнє питання полягає в тому, як це зробити БЕЗ проміжних змінних об’єктів. Головною перевагою такої речі (яка існує, наприклад, для NSString) є безпека потоків.
Мотті Шноор

14

Використовуйте NSMutableDictionary addEntriesFromDictionary, щоб додати два словники до нового змінного словника. Потім ви можете створити словник NSD із змінного, але зазвичай не потрібно мати словник, що не змінюється.


1

Чи є у вашому словнику NSD інші словники NSD? Схоже, вам знадобиться NSMutableArray, до якого ви можете додати словники NSD наприкінці. Якщо припустити, що ви можете контролювати потік даних, що надходять, і не ризикувати дублікатами у вашому масиві, ви, безсумнівно, можете додати дані.

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

Не бачачи, як ви його впроваджуєте, я не можу надати більш детальні приклади коду. Додавання предметів зробити просто, але знайте, що це можна зробити лише за допомогою змінних версій масивів або словників. Сподіваюся, це трохи допоможе.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.