我有一个C API,它带有指向具有如下函数签名的任意二进制数据的指针:
void receiveData(const char *data, size_t length);
桥接头将其导入Swift,其定义如下:
func receiveData(data: CString, length: UInt)
我觉得我错过了一些基本的东西,但我似乎无法弄清楚如何从任意CString
获得NSData
- 唯一的选择似乎是从NSString
或字符串文字。如何创建CString
?
能够通过CConstPointer<CChar>
会更有意义,但编译器没有它的条形 - 是否有某种方法可以修改由桥接头生成的Swift签名?
编辑:在Xcode 6 Beta 4中删除了CString。来自发行说明:
CString类型已被删除。现在是const char *类型的值 导入为ConstUnsafePointer而不是CString。 C宏那个 扩展为字符串文字导入为String。
答案 0 :(得分:1)
C字符串以空值终止。任意二进制数据不需要以空值终止。我认为问题是桥接机制看到char *
并且认为&#34; C字符串&#34;。也许如果你把它改成void *
,你会在Swift中得到一个更合适的类型。