Существует ли буквальный синтаксис 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.

Другие вопросы по тегам