Objective c 从Array1中减去Array2中的值,同时保留剩余的重复项

Objective c 从Array1中减去Array2中的值,同时保留剩余的重复项,objective-c,arrays,Objective C,Arrays,是否可以将一个NSMutableArray中的值与另一个NSMutableArray中的值相减,同时保留任何剩余的相似值(保留重复副本)?我不想删除这个值的每个实例,只是一个1对1的减法 我在和CGPoints合作 阵列1 ccp(1,1) ccp(1,1) ccp(1,2) ccp(1,3) 阵列2 ccp(1,1) 所需输出:阵列3 ccp(1,1) ccp(1,2) ccp(1,3)对不起,我以前没有正确理解你的问题。也许你可以试试这样: NSMutableArray *points1 =

是否可以将一个NSMutableArray中的值与另一个NSMutableArray中的值相减,同时保留任何剩余的相似值(保留重复副本)?我不想删除这个值的每个实例,只是一个1对1的减法

我在和CGPoints合作

阵列1 ccp(1,1) ccp(1,1) ccp(1,2) ccp(1,3)

阵列2 ccp(1,1)

所需输出:阵列3 ccp(1,1) ccp(1,2)
ccp(1,3)

对不起,我以前没有正确理解你的问题。也许你可以试试这样:

NSMutableArray *points1 = [NSMutableArray arrayWithObjects:
                            [NSValue valueWithCGPoint:CGPointMake(1, 1)],
                            [NSValue valueWithCGPoint:CGPointMake(1, 1)],
                            [NSValue valueWithCGPoint:CGPointMake(1, 2)],
                            [NSValue valueWithCGPoint:CGPointMake(1, 3)], nil];

NSArray        *points2 = [NSArray arrayWithObject:
                            [NSValue valueWithCGPoint:CGPointMake(1, 1)]];

NSInteger index = NSNotFound;

for (NSValue *point in points2) {
    index = [points1 indexOfObject:point];

    if (NSNotFound != index) {
        [points1 removeObjectAtIndex:index];
    }
}

NSLog(@"%@", points1);

=> 2012-03-04 00:02:26.376 foobar[19053:f803] (
       "NSPoint: {1, 1}",
       "NSPoint: {1, 2}",
       "NSPoint: {1, 3}"
   )

更新

NSNotFound
NSObjCRuntime.h
中定义。您可以通过命令+单击Xcode中的符号
NSNotFound
来找到这一点

定义是

 enum {NSNotFound = NSIntegerMax};
我知道使用它的原因是通过查看
indexOfObject:
方法的文档,该方法的内容如下:

返回值
对应数组值等于某个对象的最低索引。如果数组中没有一个对象等于一个对象,则返回
NSNotFound


这很好用,谢谢!你能评论一下NSNotFound到底在做什么吗?读了之后,我想我明白发生了什么,但我还不是100%清楚。再次感谢。@Vanny我已经添加了一些澄清,非常感谢您的详尽回答。我希望我能对这个答案投赞成票,但我是新手。