antonio's blog

antonio's blog


Блог о всяком разном, связанном с разработкой ПО. Пишу редко, когда есть время и желание.

antonio
Author

Share


Tags


Класс NSMutableSet

antonioantonio

Класс NSMutableSet, также как и NSSet, предназначен для создания неупорядоченного набора уникальных объектов, но в отличие от него позволяет создавать изменяемые (mutable) наборы. NSMutableSet является подклассом NSSet

Класс принимает следующие протоколы (наследование от NSSet):

Класс, в дополнение к унаследованным от NSSet, реализует методы создания изменяемых наборов, добавления и удаления объектов, комбинации и рекомбинации наборов.

Пример работы с изменяемым набором

NSMutableSet *mySet1 = [NSSet setWithObjects: @"one", @"two", @"three", nil];  
NSLog(@"%@", mySet1);

// Добавление объекта в набор
[mySet1 addObject:@"four"];
NSLog(@"%@", mySet1);

// Удаление объекта из набора
[mySet1 removeObject:@"one"];
NSLog(@"%@", mySet1);  

Создание изменяемого набора

+setWithCapacity: - создает набор с указанной начальной емкостью. Емкость набора передается в единственном аргументе. Емкость набора будет автоматически увеличиваться по мере необходимости. Метод возвращает объект класса NSMutableSet.

Инициализация изменяемого набора

-initWithCapacity: - инициализирует созданный набор с указанной начальной ёмкостью. Возвращает инициализированный объект класса NSMutableSet

Добавление и удалении объектов

-addObject: - добавляет новый объект к текущему набору. Метод принимает один аргумент - добавляемый объект . Если объект уже присутствует в наборе, то добавление не произойдет. Добавляемый объект захватывается с помощью посылки сообщения retain.

NSMutableSet *mySet1 = [NSSet setWithObjects: @"one", @"two", @"three", nil];  
NSLog(@"%@", mySet1);

[mySet1 addObject:@"four"];
NSLog(@"%@", mySet1);  

-addObjectsFromArray: - добавляет новые объекты к текущему набору из переданного массива. Метод принимает один аргумент — массив добавляемых объектов. Если в массиве объект встречается более одного раза , то в набор он будет добавлен только один раз. Если объект из массива уже присутствует в текущем наборе, то он также не будет добавлен. Каждый объект из массива, добавляемый в набор, захватывается с помощью посылки сообщения retain.

NSMutableSet *mySet1 = [NSSet setWithObjects: @"one", @"two", @"three", nil];  
NSArray *myArray = [NSArray arrayWithObjects: @"four", @"five", @"one", nil];  
NSLog(@"%@", mySet1);

[mySet1 addObjectsFromArray:myArray];
NSLog(@"%@", mySet1);  

-removeObject: - удаляет объект из набора. Метод принимает один аргумент - удаляемый объект

NSMutableSet *mySet1 = [NSSet setWithObjects: @"one", @"two", @"three", nil];  
NSLog(@"%@", mySet1);

[mySet1 removeObject:@"one"];
NSLog(@"%@", mySet1);  

-removeAllObjects - удаляет все объекты из набора

NSMutableSet *mySet1 = [NSSet setWithObjects: @"one", @"two", @"three", nil];  
NSLog(@"%@", mySet1);

[mySet1 removeAllObjects];
NSLog(@"%@", mySet1);  

-filterUsingPredicate: - удаляет из набора элементы не соответствующие заданному предикату. Метод принимает единственный аргумент - предикат.

NSMutableSet *mySet1 = [NSSet setWithObjects: @"one", @"two", @"three", nil];  
NSLog(@"%@", mySet1);

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF beginswith 't'"];  
[mySet filterUsingPredicate:predicate];

NSLog(@"%@", mySet1); // Набор содержит только один элемент - @"one"  

Комбинация и рекомбинация наборов

-unionSet: - добавляет в текущий набор объекты из переданного. Метод принимает один аргумент - набор добавляемых объектов. Каждый объект из переданного набора , перед добавлением в текущий, захватывается с помощью посылки сообщения retain.

-minusSet: - удаляет из текущего набора объекты, которые присутствуют и в переданном и в текущем наборе. Метод принимает один аргумент - набор удаляемых объектов.

-intersectSet: - удаляет из текущего набора объекты, которые не присутствуют в переданном. Метод принимает один аргумент - набор сравниваемых объектов.

NSMutableSet *mySet1 = [NSSet setWithObjects: @"one", @"two", @"three", nil];  
NSMutableSet *mySet2 =  [NSSet setWithObjects: @"one",  @"three", nil];

[mySet2 minusSet:mySet2];

NSLog(@"%@", mySet1); // Набор содержит элементы: @"one", @"three"  

-setSet: - очищает текущий набор, а затем добавляет объекты из переданного. Каждый объект из переданного набора , перед добавлением в текущий, захватывается с помощью посылки сообщения retain.

antonio
Author

antonio

Comments