Objective c 从Array1中减去Array2中的值,同时保留剩余的重复项
是否可以将一个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)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 =
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我已经添加了一些澄清,非常感谢您的详尽回答。我希望我能对这个答案投赞成票,但我是新手。