6

NSArrayのような文字列オブジェクト@[@"john", @"smith", @"alex", @"louis"]に名前が含まれているものがあります。また、多くの名前を含む別の配列があります。最初の配列のすべてのオブジェクトが2番目の配列にあることを確認するにはどうすればよいですか?

4

9 に答える 9

21

NSSet求める機能を備えています。

パフォーマンスの問題をしばらく無視すると、次のスニペットは必要なことを 1 行のコードで実行します。

BOOL isSubset = [[NSSet setWithArray: array1] isSubsetOfSet: [NSSet setWithArray: mainArray]];
于 2013-03-07T11:05:02.370 に答える
3

このコードを使用してください..

NSArray *temp1 = [NSArray arrayWithObjects:@"john",@"smith",@"alex",@"loui,@"Jac", nil];
NSArray *temp2 = [NSArray arrayWithObjects:@"john",@"smith",@"alex",@"loui,@"Rob", nil];

NSMutableSet *telephoneSet = [[NSMutableSet alloc] initWithArray:temp1] ;
NSMutableSet *telephoneSet2 = [[NSMutableSet alloc] initWithArray:temp2];


[telephoneSet intersectSet:telephoneSet2];

 NSArray *outPut = [telephoneSet allObjects];
 NSLog(@"%@",outPut);

出力配列には次が含まれます。

"john","smith","alex","loui

あなたの条件に従って。

于 2013-03-07T11:26:13.290 に答える
0

NSArrayfilteredArrayUsingPredicate: メソッドを使用します。両方の配列で同様のタイプのオブジェクトを見つけるのは非常に高速です

NSPredicate *intersectPredicate = [NSPredicate predicateWithFormat:@"SELF IN %@", otherArray];
NSArray *intersectArray = [firstArray filteredArrayUsingPredicate:intersectPredicate];

上記のコードから、配列を交差させると、他の配列にある同じオブジェクトが得られます。

于 2013-03-07T11:06:51.427 に答える
0

この方法を試してください。

NSArray *mainArray=@[@"A",@"B",@"C",@"D"];
NSArray *myArray=@[@"C",@"x"];

BOOL result=YES;
for(id object in myArray){
    if (![mainArray containsObject:object]) {
        result=NO;
        break;
    }
}
NSLog(@"%d",result); //1 means contains, 0 means not contains
于 2013-03-07T11:07:13.043 に答える
0
int num_of_matches = 0;
for(NSString *name in mainArray)
{
      if(array1 containsObject:name){
      num_of_matches++;
     }
}
if(num_of_matches == [array1 count]{
      // All objects present
}else {
      // Matched number is equal of number_of_matches
}
于 2013-03-07T11:04:10.290 に答える
0

NSSet array1のすべてのオブジェクトが mainArray にあるかどうかを確認する必要がある場合は、次のように使用する必要があります。

BOOL isSubset = [[NSSet setWithArray:array1] isSubsetOfSet:[NSSet setWithArray:mainArray]] 

どのオブジェクトが mainArray にあるかを確認する必要がある場合は、以下を参照してください。NSMutableSet

NSMutableSet *array1Set = [NSMutableSet setWithArray:array1];
[array1Set intersectSet:[NSSet setWithArray:mainArray]];
//Now array1Set contains only objects which are present in mainArray too
于 2013-03-07T11:04:22.097 に答える
0

ループを実行し、isEqualToStiringarray1 オブジェクトが mainArray に存在するかどうかを確認するために使用します。

于 2013-03-07T11:00:53.397 に答える
0

[NSArray containsObject:]「ジョン」、「スミス」、「アレックス」、「ルイ」と言うように、オブジェクトはarray1からのものになるという概念を使用できます

于 2013-03-07T11:03:14.813 に答える
-1
 NSArray *array1 = [NSArray arrayWithObjects:@"a", @"u", @"b", @"v", @"c", @"f", nil];
    NSMutableArray *mainArray = [NSMutableArray arrayWithObjects:@"a", @"u", @"I", @"G", @"O", @"W",@"Z",@"C",@"T", nil];
    int j=0;
    for(int i=0; i < mainArray.count; i++)
    {
        if (j < array1.count)
        {
            for( j=0; j <= i; j++)
            {
                if([[mainArray objectAtIndex:i] isEqualToString:[array1 objectAtIndex:j]] )
                {
                    NSLog(@"%@",[mainArray objectAtIndex:i]);
                }
            }
        }

    }
于 2013-03-07T11:08:00.227 に答える