Вы уверены, что вам нужно NSArray
? Для пересечений было бы лучше использовать NSSet
с. Для получения дополнительной информации об использовании NSArrays и NSSet обратитесь к Cocoa with Love: NSArray or NSSet, NSDictionary or NSMapTable.
Если вы используете NSSet
вы должны создать новый NSMutableSet
, который имеет метод intersectSet:
, который может быть использован для вашей цели:
NSMutableSet *set1 = [[NSMutableSet alloc] initWithObjects:@"0", @"1", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", nil];
NSMutableSet *set2 = [[NSMutableSet alloc] initWithObjects:@"2", @"4", @"6", @"8", @"10", @"12", @"14", @"18", nil];
NSLog(@"set1: %@", set1);
NSLog(@"set2: %@", set2);
[set1 intersectSet:set2];
NSLog(@"isec: %@", set1);
Вы можете создать NSMutableSet
из NSArray
с использованием метода addObjectsFromArray:
:
NSArray *array = [[NSArray alloc] initWithObjects:@"1", @"2", nil];
NSMutableSet *set = [[NSMutableSet alloc] init];
[set addObjectsFromArray:array];
может быть, вы можете также фильтровать NSArray
с помощью метода filterUsingPredicate:
, однако я никогда УНР ked с NSPredicate
s, поэтому это только предположение.
Это хорошее предложение, с оговоркой, что для NSSet, каждый объект в каждом наборе должен быть уникальным. Если ваши массивы имеют повторяющиеся значения, например. [0,1,2,3,2,4], NSSet не будет работать. – TechZen
Напротив, NSSet весьма полезен, потому что он не добавляет дубликатов (когда вы добавляете к нему массив). Спасибо за помощь ComSubVie и MrMage. Теперь все работает. –
Это зависит от вашего проблемного пространства. Если вы хотите записать, сколько дубликатов существует, даже если они являются дубликатами одного и того же объекта/элемента, то NSSet не будет работать. – TechZen