比较两个NSArrays

rae*_*rne 0 comparison compare objective-c nsmutablearray nsarray

我如何比较两个NSArray,以便我可以删除两个数组中没有的所有内容.

我试过这样的:

    NSArray *array1 = [NSArray arrayWithObjects:@"1",@"2",@"3",@"4", nil]; 
    NSArray *array2 = [NSArray arrayWithObjects:@"1",@"2",@"5",@"6", nil];

    NSMutableArray *myMutableArray = [NSMutableArray arrayWithArray:array1];
    NSMutableArray *myMutableArrayTwo = [myMutableArray copy];
    [myMutableArray removeObjectsInArray:array2];

    [array1 release];
    [array2 release];

    NSArray *array3 = [myMutableArray copy];
    [myMutableArrayTwo removeObjectsInArray:array3]; // Error here: "SIGABRT"

    NSLog(@"array3:%@",myMutableArrayTwo);
Run Code Online (Sandbox Code Playgroud)

但由于错误,它不起作用.它是:" - [__ NSArrayI removeObjectsInArray:]:无法识别的选择器发送到实例0x4e51550"

我做错了什么?或者有更简单的方法来解决我的问题?谢谢您的帮助

Mac*_*ade 5

这是因为您创建了NSMutableArray的副本(不可变),因此您正在丢失可变功能.

请改用该mutableCopy方法.

顺便说一句,你有很多内存问题.您array1array2变量是自动释放的对象.释放它们会引发问题.

您只需要释放您创建的数组alloc,copymutableCopy.