1

我正在制作一个用 swift 和 c 编写的字典应用程序。我正在使用 c、.h 和 .c 来搜索我拥有的字典文本文件以查找特定特征,这取决于用户输入到我称之为 DictionaryViewController 的内容。将输入数据传递给 c 函数并确定返回 char* 的方法很好,但是,在某些输入上,我创建的 char* 不会进入我的 swift 文件并产生一个 nil 值。如何确定 swift 可以访问我从 c 文件分配的内存?

//.c file

char* searchDictionary(char* u_input) {
char* returnValue = malloc(sizeof(char)*largeNumber);
//implementation
return (returnValue);
}


//.h file

char* searchDictionary(char* u_input);



//.swift file

var uin = userinput.text
let uinn = (uin as NSString).UTF8String
var uinnn = UnsafeMutablePointer<Int8>(uinn)
var out = UnsafeMutablePointer<Int8>.alloc(1)
out = searchDictionary(uinnn)
//out sometimes gets the value returned from searchDictionary
dictoutput.text = NSString(CString: out, encoding: NSUTF8StringEncoding)
4

1 回答 1

0

我发现发生了什么事。在 swift 和 c 之间使用 c 字符串时,请使用NSASCIIStringEncoding. 使用NSUTF8StringEncoding将为特定输入生成 nil 值。

于 2016-02-24T04:09:43.293 回答