小编rae*_*rne的帖子

比较两个NSArrays

我如何比较两个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"

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

comparison compare objective-c nsmutablearray nsarray

0
推荐指数
1
解决办法
1134
查看次数

过载运算符<<允许链接

我正在努力与运算符重载,因为我希望它允许链接

class A{
 int a;
public:
 void doSomething(char *str);
 A operator<<(char *str);
}
Run Code Online (Sandbox Code Playgroud)

所以我有这个课,我能做的就是拿一个字符串做一些事情,这对这个问题并不重要.

我现在能做的是

A *counter = new A();
counter->doSomething("hello");
Run Code Online (Sandbox Code Playgroud)

如果我实现了重载的移位运算符

A A::operator<<(char *str)
{
  this->doSomething(str);
  return this;
}
Run Code Online (Sandbox Code Playgroud)

我可以像这样写

A *counter = new A();
(*counter) << "hello";
Run Code Online (Sandbox Code Playgroud)

我希望我在这里没有犯错,因为现在我想知道我怎么能允许链接

(*counter) << "hello" << "test";
Run Code Online (Sandbox Code Playgroud)

我知道通过链接可以做到这一点

(*counter).operator<<("hello" << "test");
Run Code Online (Sandbox Code Playgroud)

这显然没有任何意义,因为有两个字符串/字符串数组但我知道有一种方法可以做到这一点.我用谷歌搜索它,但每个问题只是关于将相同类型的实例链接在一起

然后我尝试将两个参数放入函数并将其添加为朋友...我不确定但是我可能需要使用类型char*或流对象创建一个新的重载运算符并使其成为朋友A

感谢您的帮助,我想应该有一个我现在看不到的简单答案.

c++ operator-overloading chaining

0
推荐指数
1
解决办法
241
查看次数