получение подмножества из 2 массивов

#iphone #objective-c #xcode

#iPhone #objective-c #xcode

Вопрос:

У меня есть 2 NSArray , давайте назовем это как CountriesArray и UNCountriesArray . CountriesArray Содержит все страны мира, а UNCountriesArray содержит все страны, входящие в Организацию Объединенных Наций.

Я хочу получить subset из 2 массивов. итак, наконец, я должен получить массив, содержащий страны, которые не принадлежат Организации Объединенных Наций. Может ли кто-нибудь помочь мне написать objective-c код, который получает подмножество из 2 массивов?

Ответ №1:

Использовать наборы:

 NSMutableSet *countriesSet = [NSMutableSet setWithArray:countriesArray];
NSSet *unSet = [NSSet setWithArray:unCountriesArray];
[countriesSet minusSet:unSet];
// countriesSet now contains only those countries who are not part of unSet
  

Имейте в виду, что элементы набора не отсортированы. Если вы хотите получить отсортированный массив, вам придется повторно отсортировать результат.

Комментарии:

1. Как я могу сохранить результат в NSArray ? [countriesSet minusSet:unSet]; Возвращает NSArray

2. NSArray *resultArray = [countriesSet allObjects]; Документация — ваш друг. 🙂

Ответ №2:

Для этого вы можете использовать метод removeObjectsInArray из NSMutableArray. Например:

 NSMutableArray *countriesArray = [NSMutableArray arrayWithObjects:@"1", @"2", @"3", @"4", @"5", nil];
NSArray *unCountriesArray = [NSArray arrayWithObjects:@"2", @"4", nil];
[countriesArray removeObjectsInArray:unCountriesArray];
NSLog(@"Countries array: %@", countriesArray);
  

Комментарии:

1. Не может countriesArray также быть NSArray ? это обязательно должно быть NSMutableArray ?