如何从 NSDictionary 中删除对象

Posted

技术标签:

【中文标题】如何从 NSDictionary 中删除对象【英文标题】:how to remove object from NSDictionary 【发布时间】:2010-10-07 07:31:12 【问题描述】:

嗨,我有一个 NSdictionary,我在其中添加了一个带有键“国家”的数组。现在我将此字典的值放入数组并按字母顺序对数组进行排序。现在我想将此数组添加到我的字典中(即我想用新的排序数组更新我的字典并从中删除旧数组)。 .......如何做到这一点

我的代码如下

NSArray *countriesToLiveInArray = [NSArray arrayWithObjects:@"Iceland", @"Greenland", @"Switzerland", @"Norway", @"New Zealand", @"Greece", @"Italy", @"Ireland", nil];
NSDictionary *countriesToLiveInDict = [NSDictionary dictionaryWithObject:countriesToLiveInArray forKey:@"Countries"];


NSArray *tmpary = [countriesToLiveInDict valueForKey:@"Countries"];
NSLog(@"ary value is  %@",ary);
NSArray *sortedArray = [tmpary sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
NSLog(@"sortedArray is %@",sortedArray);

在这里,我想删除 countriesToLiveInArray 并将其替换为具有相同键值的 sortedArray,即 Country 提前谢谢..

【问题讨论】:

为什么不在将数组添加到字典之前对其进行排序? Use objectForKey: not valueForKey: valueForKEy: 在技术上是用于 KVC 的,它的速度非常慢。 【参考方案1】:

首先您需要使用NSMutableDictionary 并输入以下代码:

[countriesToLiveInDict removeObjectForKey:@"Countries"];
[countriesToLiveInDict setObject:sortedArray forKey:@"Countries"];

【讨论】:

您不需要删除之前的对象作为键。 -setObject:forKey:如果在已经存在的 kety 上调用,则自动释放前一个对象。【参考方案2】:

首先将你的 NSDictionary 设置为 NSMutableDictionary 然后编写以下代码行

[countriesToLiveInDict removeObjectForKey:@"Countries"];

这肯定会解决您的问题。

【讨论】:

是否需要设置countriesToLiveInDict = 不要这样做,文档状态 -[NSMutableDictionary removeObjectForKey:] 返回 void。见:- (void)removeObjectForKey:(KeyType)aKey【参考方案3】:

NSDictionary不能删除任何东西,请使用NSMutableDictionary,像这样:

NSMutableDictionary *countriesToLiveInDict = [NSMutableDictionary dictionaryWithObject:countriesToLiveInArray forKey:@"Countries"];

【讨论】:

【参考方案4】:

对于 Swift 3 正如@MathieuF 回答的那样 首先,您需要使用 NSMutableDictionary 并输入以下代码:

countriesToLiveInDict.removeObject(forKey: "Countries")

我在搜索相同问题时发布我的答案并受到@MathieuF 的启发

【讨论】:

以上是关于如何从 NSDictionary 中删除对象的主要内容,如果未能解决你的问题,请参考以下文章

转NSDictionary以及NSMutableDictionary的用法

如何从 NSDictionary 中删除空值

从 NSDictionary 对象的 NSArray 中,如何获取唯一的 NSArray

如何从 NSDictionary 获取整个对象

如何从 NSDictionary 中获取 NSArray 名称?

从 NSDictionary 中删除密钥