2013-09-24 31 views
0

我有两个MutableArray类似。如何比较两个MutableArrays并在iphone中显示不匹配的值?

NSMutableArray *array=[[NSMutableArray alloc]initWithObjects:@"Apple", @"Orange", @"Grapes", @"Banana", nil]; 

NSMutableArray *array1=[[NSMutableArray alloc]initWithObjects:@"Apple", @"Orange", @"Grapes", nil]; 

现在我要比较两个易变阵列并显示无与伦比的对象“香蕉”成一个字符串。

我很清新iOS,所以任何人都会向我发送该问题的代码。

在此先感谢。

回答

2

正如其他人建议,NSSet中可能是你最好的选择。然而,由于*数组是可变的,你可以简单地从其中包含的对象中删除* array1

NSMutableArray *array=[[NSMutableArray alloc]initWithObjects:@"Apple", @"Orange", @"Grapes", @"Banana", nil]; 
NSMutableArray *array1=[[NSMutableArray alloc]initWithObjects:@"Apple", @"Orange", @"Grapes", nil]; 

[array removeObjectsInArray:array1]; 
NSLog(@"array: %@", array);   // array: (Banana) 

// if you require result as a string 
NSString *objectsAsString = [array componentsJoinedByString:@", "]; 
NSLog(@"objects as string: %@", objectsAsString); // objects as string: Banana 
0
for(int i=0;i<[array count];i++) 
    { 

    NSString *str1 = [array objectAtIndex:i]; 
    for(int j=0;j<[array1 count];j++) 
    { 

    NSString *str2 = [array1 objectAtIndex:j]; 
    if([str1 isEqualToString:str2]) 
    { 
    //do something which you want i.e add the values to some other array 
    } 
    } 

} 
+0

运行代码并找到Apple,Orange的答案。 – Subrat

+0

我已经运行它,发现苹果,桔子和葡萄匹配 – Tendulkar

+0

是的我的错误。是与你的输出匹配。 – Subrat

0

你应该使用NSSet用于此目的

NSSet *set1 = [NSSet setWithObjects:@"a", @"s", @"d", @"f", nil]; 
NSSet *set2 = [NSSet setWithObjects:@"a", @"s", nil]; 

NSMutableSet *notInSet1 = [NSMutableSet setWithSet:set2]; 
[notInSet1 minusSet:set1]; 
NSMutableSet *notInSet2 = [NSMutableSet setWithSet:set1]; 
[notInSet2 minusSet:set2]; 

NSMutableSet *symmetricDifference = [NSMutableSet setWithSet:notInSet1]; 
[symmetricDifference unionSet:notInSet2]; 
0
NSArray *array1 = [[NSArray alloc] initWithObjects:@"a",@"b",@"c",nil]; 
NSArray *array2 = [[NSArray alloc] initWithObjects:@"a",@"d",@"c",nil]; 
NSMutableArray *ary_result = [[NSMutableArray alloc] init]; 
NSMutableArray *ary_resultUnmatched = [[NSMutableArray alloc] init]; 
for(int i = 0;i<[array1 count];i++) 
{ 
    for(int j= 0;j<[array2 count];j++) 
    { 
     if([[array1 objectAtIndex:i] isEqualToString:[array2 objectAtIndex:j]]) 
     { 
      [ary_result addObject:[array1 objectAtIndex:i]]; 
     } else { 
      [ary_resultUnmatched addObject:[array1 objectAtIndex:i]]; 
     } 
    } 
} 
NSLog(@"%@",ary_result);//it will print a,c 
NSLog(@"%@",ary_resultUnmatched);//it will print b,d 

所以在其他条件你有你的未匹配的值

相关问题