簡體   English   中英

NSArray - 檢查對象是否在數組中?

[英]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。 我希望這篇文章可以幫助你開始......

http://marcocattai.posterous.com/nsarray-nspredicate-filter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM