【发布时间】:2018-12-24 05:22:15
【问题描述】:
我有一个 C API,其签名如下:
SendPing(char * content);
现在,我想从 Swift 中调用它。 Swift 似乎自动将其导入为:
SendPing(content: UnsafeMutablePointer<Int8>!)
但是,当我在 Swift 中尝试时:
var content:String = "sampledata"
SendPing(content)
我认为 Swift 可以自动处理“String”到“UnsafeMutablePointer”的转换,但事实并非如此。报告的错误是:“无法将 'String' 类型的值转换为预期的参数类型 'UnsafeMutablePointer!'。我记得它在 Swift 3.0 中有效,但我可能错了。
在 Swift 4.2 中处理这个问题的正确方法是什么?
有问题的解决方案:Swift convert string to UnsafeMutablePointer<Int8> 对我不起作用。我无法找出根本原因,但我猜这是由于 Swift 4.2 造成的。
【问题讨论】:
-
我之前没有注意到这个问题已经被问到here。
-
@Kamran,谢谢。我已经尝试了您提供的链接中的方式,但它不起作用。到目前为止,我的方法似乎是最简单的。
-
有很多答案并且似乎有效。不知道为什么他们在你的情况下不起作用。如果您知道这已经被问到,那么您可以在该问题下添加您的答案,而不是重复相同的问题。
-
@Kamran,我在这上面花了几个小时并尝试了与这里不同的答案,但不幸的是我不够幸运。所以,我发布了一个新问题。很快,我就明白了。这就是发生的事情。我不打算创建一个问题然后自己回答。
标签: swift