Добавление NSDictionary к другому NSDictionary


87

У меня есть один, NSDictionaryи он загружается UITableView. Если пользователь прокручивает все больше и больше, я вызываю API и извлекаю новые данные. Эти данные снова представлены в виде файла NSDictionary. Можно ли добавить новое NSDictionaryк существующему?

Ответы:


205

Вы ищете этого парня:

[NSMutableDictionary addEntriesFromDictionary:]

Убедитесь, что ваш UITableViewсловарь NSMutableDictionary!

Проверить это здесь


9
Да, но зачем вам дублирующиеся записи ключей в словаре?
Johan Karlsson

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, чтобы добавить два словаря в новый изменяемый словарь. Затем вы можете создать NSDictionary из изменяемого, но обычно не обязательно иметь неизменяемый словарь.


1

Есть ли в вашем NSDictionary другие NS-словари? Похоже, вам понадобится NSMutableArray, в который вы можете добавить NSDictionaries в конце. Предполагая, что вы можете контролировать поток поступающих данных и не подвергаться риску дублирования в вашем массиве, вы, безусловно, можете добавить данные.

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.