6

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

4

3 回答 3

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;

将删除一个元素。

于 2014-02-26T21:25:16.637 回答
3

不,那里没有。我试图找到证明链接但没有成功:)

于 2014-02-26T20:34:47.087 回答
2

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

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

请参阅Foundation 发行说明(搜索标题NSMutableDictionary subscript syntax change)。

于 2017-09-19T17:45:10.250 回答