从NSData创建CString

时间:2014-06-24 13:10:50

标签: swift nsdata

我有一个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。

1 个答案:

答案 0 :(得分:1)

C字符串以空值终止。任意二进制数据不需要以空值终止。我认为问题是桥接机制看到char *并且认为&#34; C字符串&#34;。也许如果你把它改成void *,你会在Swift中得到一个更合适的类型。