如何确保我的数组结构在Objective-C和Swift中都相同?

时间:2016-09-20 17:07:20

标签: ios objective-c swift

我通过链接头从我的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中的数组结构相同?

1 个答案:

答案 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中的一个事项传递,除非它总是相同的。

顺便说一句,你应该在swift中传入array1作为in-out(注意&):

OpenCVWrapper.thefunc(&array1,...)