Swift 从NSData创建CString

Swift 从NSData创建CString,swift,nsdata,Swift,Nsdata,我有一个C API,它使用一个指针指向具有如下函数签名的任意二进制数据: void receiveData(const char *data, size_t length); 桥接标头使用以下定义将其导入Swift: func receiveData(data: CString, length: UInt) 我觉得我缺少了一些基本的东西,但我似乎不知道如何从任意的NSData获取CString——唯一的选项似乎是从NSString转换或作为字符串文本。如何创建CString 如果能够通过CC

我有一个C API,它使用一个指针指向具有如下函数签名的任意二进制数据:

void receiveData(const char *data, size_t length);
桥接标头使用以下定义将其导入Swift:

func receiveData(data: CString, length: UInt)
我觉得我缺少了一些基本的东西,但我似乎不知道如何从任意的
NSData
获取
CString
——唯一的选项似乎是从
NSString
转换或作为字符串文本。如何创建
CString

如果能够通过
CConstPointer
,这会更有意义,但是编译器没有它的条-有什么方法可以修改桥接头生成的Swift签名吗

编辑:在Xcode 6 Beta 4中删除了CString。从发行说明中:

CString类型已被删除。const char*类型的值现在为 作为ConstUnsafePointer而不是CString导入。C宏 “展开到字符串”文本将作为字符串导入


C字符串以null结尾。任意二进制数据不需要以null结尾。我认为问题在于桥接机制看到了一个
char*
,认为是“C字符串”。如果您将其更改为
void*
,您可能会在Swift中获得一个更合适的类型。

这可能是重复的:@hotpaw2:不,这是关于从二进制数据而不是编码的字符串数据创建CString。这肯定是个问题,但这似乎是一个相当重要的假设,即桥接头正在生成-char*不一定是以null结尾的字符串。现在我将更改标题,如果没有人提出更好的解决方案,我将给您打勾。