#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
?