我已经导入并为Swift创建了一些旧的C源代码的桥接头。函数签名如下所示:
struct Message prattle_parse_message(char *line);
它的快速声明是:
func prattle_parse_message(line: CMutablePointer<CChar>) -> Message
但是,我不确定如何将Swift String
(或NSString
)转换为CMutablePointer<CChar>
以传递给此函数。
("Test" as NSString).UTF8String
会返回CString
,但无法正常工作。
有人能指出我正确的方向吗?
答案 0 :(得分:3)
这个 应该是......
var data = inString.dataUsingEncoding(encoding, allowsLossyConversion: allow)
var ccharstr = CChar[](count:data.length, repeatedValue:CChar(0))
data.getBytes(&ccharstr length:data.length)
ccharstr.append(CChar(0))
var message = prattle_parse_message(&ccharstr)
无法测试最后一行,但我认为这应该可行
答案 1 :(得分:0)
这似乎有效:
prattle_parse_message(str.bridgeToObjectiveC()。UTF8字符串)