是否有NSMutableDictionary文字语法删除元素?

时间:2014-02-26 20:31:00

标签: objective-c nsmutabledictionary objective-c-literals

有一个文字语法在NSMutableDictionary中添加对象和更改对象,是否有删除对象的文字语法?

3 个答案:

答案 0 :(得分:5)

是的,但......: - )

默认情况下不支持此功能,但设置字典元素的新语法使用方法setObject:forKeyedSubscript:而不是setObject:forKey:。因此,您可以编写一个替换前者的类别,并设置或删除元素:

@implementation NSMutableDictionary (RemoveWithNil)

- (void) setObject:(id)obj forKeyedSubscript:(id<NSCopying>)key
{
   if (obj)
      [self setObject:obj forKey:key];
   else
      [self removeObjectForKey:key];
}

@end

将其添加到您的应用程序中,然后:

dict[aKey] = nil;

将删除元素。

答案 1 :(得分:3)

没有。那没有。我试图找到证据链接但没有成功:)

答案 2 :(得分:2)

从iOS 9和macOS 10.11开始,这两个是等价的:

 [dictionary removeObjectForKey:@"key"];
 dictionary[@"key"] = nil;

请参阅Foundation release notes(搜索标题NSMutableDictionary subscript syntax change)。