我有两个不同的 NSMutabelArray ArrOne 和 ArrTwo。Letsay ArrOne = A、B、C 和 D ArrTwo = C、D、X 和 Y。所以我需要检查 ArrTwo 的值是否与 ArrOne 相同,如果它与 ArrOne 中的不同,则从 ArrTwo 中删除项目。在这种情况下,我必须从 ArrTwo 中删除 X 和 Y。请给我一个想法。
问问题
1567 次
3 回答
4
NSMutableSet *set = [NSMutableSet setWithArray:arrOne];
[set intersectSet:[NSSet setWithAray:arrTwo];
return [set allObjects];
于 2013-03-08T02:48:23.017 回答
3
您可以使用 indexOfObjectsPassingTest 来完成,如下所示:
NSMutableArray *a = [@[@"A",@"B",@"C",@"D"] mutableCopy];
NSMutableArray *b = [@[@"C",@"D",@"X",@"Y"] mutableCopy];
NSIndexSet *indxs = [b indexesOfObjectsPassingTest:^BOOL(NSString *obj, NSUInteger idx, BOOL *stop) {
return ![a containsObject:obj];
}];
[b removeObjectsAtIndexes:indxs];
于 2013-03-08T04:04:18.930 回答
1
我找到了一个解决方案并且它有效
for (int i=0; i< arrTwo.count; i++)
{
if(![arrOne containsObject:[arrTwo objectAtIndex:i]])
{
//do action
NSLog(@"do delete %@",[arrTwo objectAtIndex:i]);
}
}
谢谢!
于 2013-03-11T02:23:49.343 回答