是否可以从一个NSMutableArray中减去另一个NSMutableArray中的值,同时保留任何剩余的类似值(保留重复副本)?我不想删除值的每个实例,只是1比1的减法。
我正在使用CGPoints。
数组1 CCP(1,1) CCP(1,1) CCP(1,2) CCP(1,3)
ARRAY2 CCP(1,1)
所需的输出:Array3 CCP(1,1) CCP(1,2) CCP(1,3)
答案 0 :(得分:1)
抱歉,我之前没有正确理解你的问题。也许你可以尝试类似的东西:
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:
方法的NSArray文档,其中包含:
返回值
最低索引,其对应的数组值等于anObject。如果数组中的所有对象都不等于anObject,则返回NSNotFound
。