我通过链接头从我的swift viewController调用.mm(objective-c / c ++)类方法。它们已成功链接。但是,我正在努力传递匹配为参数的正确数据类型。 这是我在swift中调用函数的地方
Tail
B-123
B-645
B-938
B-123
B-645
B-938
B-888
B-888
----------
Class
1
2
1
2
2
1
1
2
.. OpenCVWrapper.thefunc(array1, otherstuff);
的类型为.array1
这是objective-c
中的定义[[Int]]
但我收到了错误
+(NSString*) thefunc: (int[][2])array1 otherstuff(int)other{
正如我发布的另一个类似问题中所讨论的,我需要确保swift array1实际上是[(Int32,Int32)]类型。现在,没有错误被抛出。
但是,当我干燥运行Objective-C方法时,array1仅显示2个值(在断点之后)。在Swift中我通过9(2),这就是我想要的。
我的问题是,如何确认我在objective-c中的数组与swift中的数组结构相同?
答案 0 :(得分:1)
您似乎依靠调试器向您显示作为array1传入的值。要以编程方式验证是否传递了正确的值,您可以在thefunc()
中执行以下操作:
+(NSString*) thefunc : (int[][2])array1 {
for (int i = 0; i < 9; i++)
printf("Tuple %d is: %d, %d\n", i, array1[i][0], array1[i][1]);
...
}
9是您传递的2-int元组的数量。这个计数应该作为otherstuff
中的一个事项传递,除非它总是相同的。
&
):
OpenCVWrapper.thefunc(&array1,...)