Существует ли буквальный синтаксис NSMutableDictionary для удаления элемента?
Существует литеральный синтаксис для добавления объекта и изменения объекта в NSMutableDictionary. Существует ли литеральный синтаксис для удаления объекта?
3 ответа
Решение
Да, но...:-)
Это не поддерживается по умолчанию, однако новый синтаксис для установки элементов словаря использует метод 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;
удалит элемент.
Начиная с iOS 9 и macOS 10.11, эти два эквивалента:
[dictionary removeObjectForKey:@"key"];
dictionary[@"key"] = nil;
Смотрите примечания к выпуску Foundation.