[英]NSArray - check if objects are in an array?
我有2個陣列。 一個是600個對象的大型靜態組,另一個是10個對象的小組。
我想在兩個組之間采用任何常見對象並將它們放在一個新數組中。
因此,假設大組包含600個名為1到600的對象。較小的組包含9個對象:1,2,3,4,5,6,a,b,c。 我希望能夠創建一個包含對象1,2,3,4,5,6的新數組。
做這個的最好方式是什么?
你確定你需要NSArray
嗎? 對於交叉點,最好使用NSSet
。 有關NSArrays和NSSet的使用的更多信息,請參閱Cocoa with Love:NSArray或NSSet,NSDictionary或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);
您可以使用addObjectsFromArray:
方法從NSArray
創建NSMutableSet
:
NSArray *array = [[NSArray alloc] initWithObjects:@"1", @"2", nil];
NSMutableSet *set = [[NSMutableSet alloc] init];
[set addObjectsFromArray:array];
可能你也可以使用filterUsingPredicate:
方法過濾NSArray
,但是我從未使用過NSPredicate
因此這只是一個假設。
最簡單的(但不一定是最快的(?))方式就是這樣的
NSMutableSet *intersection = [NSMutableSet setWithArray:smallArray];
[intersection intersectSet:[NSSet setWithArray:bigArray];
NSArray *result = [NSArray arrayWithSet:intersection];
但是,您必須再次對生成的數組進行排序。
你可以使用NSPredicate。 我希望這篇文章可以幫助你開始......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.