将NSDictionary附加到其他NSDictionary


87

我有一个NSDictionary,它装满了UITableView。如果用户滚动的越来越多,我会调用API并提取新数据。该数据再次以的形式出现NSDictionary。是否可以将新的添加NSDictionary到现有的?

Answers:


205

您正在寻找这个人:

[NSMutableDictionary addEntriesFromDictionary:]

确保您的UITableView字典是NSMutableDictionary

在这里检查


9
是的,但是为什么要在字典中重复输入键?
约翰·卡尔森

2
-[NSDictionary dictionaryByAddEntriesFromDictionary:]但是,我想要的是中没有这样的方法NSDictionary
DawnSong 2015年

显然,这只是字典的联合操作,而不是重复的条目。@JohanKarlsson
DawnSong 2015年

3
@DawnSong如果您使用以下方法,我只会在NSDictionary上创建一个类别: + (instancetype)dictionaryByAddingEntriesFromDictionary:(NSDictionary *)dictionary { NSMutableDictionary *combinedDictionary = [NSMutableDictionary dictionaryWithDictionary:self]; [combinedDictionary addEntriesFromDictionary:dictionary]; return combinedDictionary; } 抱歉格式化问题。StackOverflow不允许在注释中使用友好的多行代码格式。
BigSauce

我认为真正的问题是如何在没有中间可变对象的情况下执行此操作。这样的事情(例如,对于NSString存在)的主要好处是线程安全。
Motti Shneor

14

使用NSMutableDictionary addEntriesFromDictionary将两个字典添加到新的可变字典中。然后,您可以从可变的NSDictionary创建NSDictionary,但是通常不必使字典不可变。


1

您的NSDictionary中是否还有其他NSDictionaries?听起来您需要一个NSMutableArray,可以在末尾添加NSDictionaries。假设您可以控制传入的数据流并且不会冒阵列中重复的风险,则可以肯定地追加数据。

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

在不了解您如何实现的情况下,我无法提供更详细的代码示例。附加项目很容易做到,但知道只能使用可变版本的Arrays或Dictionaries完成。希望这有所帮助。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.