SlideShare uma empresa Scribd logo
1 de 10
Baixar para ler offline
iOS Internship 2014
NSSet+NSMutableSet
Максим Забелин
NSSet+NSMutableSet
Для чего?
Хранит неупорядоченный набор различных
элементов.
NSSet - неизменяемые объекты
NSMutableSet - изменяемые объекты, можно
производить с ними теоретико-
множественные операции
NSSet+NSMutableSet
Что с ним можно делать:
● Получить из NSArray и вернуть NSArray со
всеми элементами (нельзя рассчитывать
на определенный порядок)
● Проверять утверждения x∈A, A⊆B и
A∩B = ∅
● Отфильтровать
NSSet+NSMutableSet
Получить/вернуть
- (NSArray *)allObjects;
- (id)anyObject;
- (id)initWithArray:(NSArray *)array;
NSSet+NSMutableSet
Теория множеств
x∈A
- (BOOL)containsObject:(id)anObject;
A∩B = ∅
- (BOOL)intersectsSet:(NSSet *)otherSet;
A⊆B
- (BOOL)isSubsetOfSet:(NSSet *)otherSet;
NSSet+NSMutableSet
Отфильтровать
- (NSSet *)objectsPassingTest:(BOOL (^)(id obj, BOOL
*stop))predicate NS_AVAILABLE(10_6, 4_0);
- (NSSet *)objectsWithOptions:(NSEnumerationOptions)opts
passingTest:(BOOL (^)(id obj, BOOL *stop))predicate
NS_AVAILABLE(10_6, 4_0);
NSSet+NSMutableSet
Пример
NSSet *numbers = [NSSet setWithArray: @[@2, @3, @2, @10, @100, @50, @100]];
NSLog(@"%lu", (unsigned long)[numbers count]); // 5
NSSet *numbers2 = [NSSet setWithArray: @[@2, @3]];
NSLog(@"%d", [numbers2 isSubsetOfSet: numbers]); // 1
NSLog(@"%d", [numbers containsObject: @2]); // 1
NSLog(@"%d", [numbers2 intersectsSet: numbers]); // 1
NSSet *lessThan50 = [numbers objectsPassingTest:^BOOL(id obj, BOOL *stop) {
return [obj intValue] < 50;
}];
NSLog(@"%@", lessThan50); // 3, 10, 2 - порядок произвольный
NSSet+NSMutableSet
NSMutableSet
- (void)addObject:(id)object;
- (void)removeObject:(id)object;
- (void)addObjectsFromArray:(NSArray *)array;
- (void)intersectSet:(NSSet *)otherSet;
- (void)minusSet:(NSSet *)otherSet;
- (void)removeAllObjects;
- (void)unionSet:(NSSet *)otherSet;
- (void)setSet:(NSSet *)otherSet;
NSSet+NSMutableSet
Пример
NSMutableSet *cars = [NSMutableSet setWithArray: @[@"Porsche", @"Bugatti", @"
Ferrari", @"Lada Kalina"]];
NSSet *otherCars = [NSSet setWithArray: @[@"Lamborghini", @"Ford"]];
NSSet *russianCars = [NSSet setWithObject: @"Lada Kalina"];
[cars unionSet: otherCars];
[cars minusSet: russianCars];
NSLog(@"%@", cars);
/*
Ford,
Porsche,
Ferrari,
Lamborghini,
Bugatti */
NSSet+NSMutableSet
Дополнительно
1.https://developer.apple.
com/library/ios/documentation/Cocoa/Referenc
e/Foundation/Classes/NSSet_Class/Reference/
Reference.html
2.http://rypress.com/tutorials/objective-c/data-
types/nsset.html

Mais conteúdo relacionado

Mais procurados

Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
Technopark
 
Лекция 7: Бинарные кучи (пирамиды)
Лекция 7: Бинарные кучи (пирамиды)Лекция 7: Бинарные кучи (пирамиды)
Лекция 7: Бинарные кучи (пирамиды)
Mikhail Kurnosov
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Nikolay Grebenshikov
 
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)
Mikhail Kurnosov
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4
Technopark
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
Technopark
 

Mais procurados (12)

Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1Алгоритмы и структуры данных осень 2013 лекция 1
Алгоритмы и структуры данных осень 2013 лекция 1
 
Основы Java. 4. Collection Framework
Основы Java. 4. Collection FrameworkОсновы Java. 4. Collection Framework
Основы Java. 4. Collection Framework
 
Highload. Создание специализированных высокопроизводительных индексов
Highload. Создание специализированных высокопроизводительных индексовHighload. Создание специализированных высокопроизводительных индексов
Highload. Создание специализированных высокопроизводительных индексов
 
Лекция 7: Бинарные кучи (пирамиды)
Лекция 7: Бинарные кучи (пирамиды)Лекция 7: Бинарные кучи (пирамиды)
Лекция 7: Бинарные кучи (пирамиды)
 
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
Лекция №7. Поиск. Деревья поиска. Предмет "Структуры и алгоритмы обработки да...
 
Pr i-6
Pr i-6Pr i-6
Pr i-6
 
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)
Лекция 7: Очереди с приоритетами. Бинарные кучи (пирамиды)
 
Pr i-6
Pr i-6Pr i-6
Pr i-6
 
Exl
ExlExl
Exl
 
Exl
ExlExl
Exl
 
Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4Алгоритмы и структуры данных осень 2013 лекция 4
Алгоритмы и структуры данных осень 2013 лекция 4
 
Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1Алгоритмы и структуры данных весна 2014 лекция 1
Алгоритмы и структуры данных весна 2014 лекция 1
 

Destaque

iOS-01-Основы Objective-C
iOS-01-Основы Objective-CiOS-01-Основы Objective-C
iOS-01-Основы Objective-C
Noveo
 

Destaque (20)

09 ns data
09   ns data09   ns data
09 ns data
 
Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)Работа с соцсетями (Lecture 19 – social)
Работа с соцсетями (Lecture 19 – social)
 
мультимедиа
мультимедиамультимедиа
мультимедиа
 
05 ns dictionary
05   ns dictionary05   ns dictionary
05 ns dictionary
 
iOS-02-Паттерны ООП
iOS-02-Паттерны ООПiOS-02-Паттерны ООП
iOS-02-Паттерны ООП
 
iOS-01-Основы Objective-C
iOS-01-Основы Objective-CiOS-01-Основы Objective-C
iOS-01-Основы Objective-C
 
хранение данных
хранение данныххранение данных
хранение данных
 
Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)Box model, display and position (HTML5 тема 07 - box model, display position)
Box model, display and position (HTML5 тема 07 - box model, display position)
 
11 ns copying, subscripting, fast enumeration
11   ns copying, subscripting, fast enumeration11   ns copying, subscripting, fast enumeration
11 ns copying, subscripting, fast enumeration
 
02 ns string
02   ns string02   ns string
02 ns string
 
07 ns value
07   ns value07   ns value
07 ns value
 
10 ns error
10   ns error10   ns error
10 ns error
 
обработка событий
обработка событийобработка событий
обработка событий
 
03 коллекции
03   коллекции03   коллекции
03 коллекции
 
iOS-05_2-UIKit
iOS-05_2-UIKitiOS-05_2-UIKit
iOS-05_2-UIKit
 
Rest
RestRest
Rest
 
iOS-07_1 Objective-C Blocks
iOS-07_1 Objective-C BlocksiOS-07_1 Objective-C Blocks
iOS-07_1 Objective-C Blocks
 
iOS-07_2 Multithreading
iOS-07_2 MultithreadingiOS-07_2 Multithreading
iOS-07_2 Multithreading
 
карты, навигация
карты, навигациякарты, навигация
карты, навигация
 
шаринг
шарингшаринг
шаринг
 

Semelhante a 06 ns set (6)

Talks on collections
Talks on collectionsTalks on collections
Talks on collections
 
Multiprocessor Programming Intro (lecture 3)
Multiprocessor Programming Intro (lecture 3)Multiprocessor Programming Intro (lecture 3)
Multiprocessor Programming Intro (lecture 3)
 
Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"Sergii Tsypanov "Performance 1001 Tips"
Sergii Tsypanov "Performance 1001 Tips"
 
Java Core. Lecture# 4. Collections.
Java Core. Lecture# 4. Collections.Java Core. Lecture# 4. Collections.
Java Core. Lecture# 4. Collections.
 
Kvc, kvo
Kvc, kvoKvc, kvo
Kvc, kvo
 
Python и его тормоза
Python и его тормозаPython и его тормоза
Python и его тормоза
 

Mais de Noveo

Mais de Noveo (20)

Гуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрииГуманитарные специальности в IT-индустрии
Гуманитарные специальности в IT-индустрии
 
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
Ссылки, списки и меню (HTML5 тема 06 - ссылки, списки и меню)
 
Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)Стилизация текста (HTML5 тема 05 - стилизация текста)
Стилизация текста (HTML5 тема 05 - стилизация текста)
 
Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)Семантика текста (HTML5 тема 04 - семантика текста)
Семантика текста (HTML5 тема 04 - семантика текста)
 
Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)Основы CSS (HTML5 тема 02 - основы CSS)
Основы CSS (HTML5 тема 02 - основы CSS)
 
Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)Структура HTML документа (HTML5 тема 01 - структура html документа)
Структура HTML документа (HTML5 тема 01 - структура html документа)
 
Yii2
Yii2Yii2
Yii2
 
Сессии и авторизация
Сессии и авторизацияСессии и авторизация
Сессии и авторизация
 
PHP basic
PHP basicPHP basic
PHP basic
 
PHP Advanced
PHP AdvancedPHP Advanced
PHP Advanced
 
PHP and MySQL
PHP and MySQLPHP and MySQL
PHP and MySQL
 
MySQL
MySQLMySQL
MySQL
 
Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)Push Notifications (Lecture 22 – push notifications)
Push Notifications (Lecture 22 – push notifications)
 
RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)RxJava+RxAndroid (Lecture 20 – rx java)
RxJava+RxAndroid (Lecture 20 – rx java)
 
Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)Работа с геоданными (Lecture 18 – geolocation)
Работа с геоданными (Lecture 18 – geolocation)
 
Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)Animations (Lecture 17 – animations)
Animations (Lecture 17 – animations)
 
Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)Toolbar (Lecture 16 – toolbar)
Toolbar (Lecture 16 – toolbar)
 
Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)Material Design (Lecture 15 – material design)
Material Design (Lecture 15 – material design)
 
Database (Lecture 14 – database)
Database (Lecture 14 – database)Database (Lecture 14 – database)
Database (Lecture 14 – database)
 
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
Библиотеки для передачи данных (Lecture 13 – multithreading, network (libs))
 

06 ns set