gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 16:10:42 24 4
gpt4 key购买 nike

我正在通过链接的 header 从我的 swift viewController 调用 .mm (objective-c/c++) 类方法。它们已成功链接。但是,我正在努力传递与参数匹配的正确数据类型。这是我在 swift 中调用函数的地方

OpenCVWrapper.thefunc(array1, otherstuff);

...array1 的类型为 [[Int]]

这是objective-c中的定义

+(NSString*) thefunc: (int[][2])array1 otherstuff(int)other{

但是我得到了错误

Cannot convert value of type '[[Int]]' to expected argument type 'UnsafeMutablepointer<(Int32)(Int32)>!'

正如我在另一个类似问题中所讨论的那样,我需要确保 swift array1 实际上是 [(Int32, Int32)] 类型。现在,不会抛出任何错误。

但是,当我试运行 Objective-C 方法时,array1 仅显示 2 个值(在断点之后)。在 Swift 中,我通过了 9 个(共 2 个),这就是我想要的。

我的问题是,如何确认我在 objective-c 中的数组与 swift 中的数组结构相同?

最佳答案

您似乎依赖调试器来显示作为 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 整数元组的数量。此计数可能应该作为 otherstuff 中的内容之一传递,除非它始终相同。

顺便说一句,您应该在 Swift 中将 array1 作为 in-out 传递(注意 &):

OpenCVWrapper.thefunc(&array1,...)

关于ios - 如何确保我的数组结构在 Objective-C 和 Swift 中相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39599995/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com