我看过其他答案,但对我来说毫无意义。
我正在尝试将此库添加到我的Swift项目中: http://ed-von-schleck.github.io/shoco/
我按照本教程中的第1步和第2步操作: https://medium.com/swift-and-ios-writing/using-a-c-library-inside-a-swift-framework-d041d7b701d9#.r1gi4q3ri
我可以导入shoco模块(yay!)
根据API,这是函数应该是什么:
size_t shoco_compress(const char * in, size_t len, char * out, size_t bufsize);
但是我的Swift项目生成了这个编辑器占位符
shoco_compress(in: UnsafePointer<Int8>!, len: Int, out: UnsafeMutablePointer<Int8>!, bufsize: Int)
有人可以告诉我如何使用这个库压缩Swift中的字符串吗?
第一次使用C时,任何正确方向的推动都会受到赞赏。提前谢谢。
答案 0 :(得分:2)
你一定要阅读Using Swift with C API。对于您的问题,这是一个完整的压缩 - 解压缩周期的例子:
let str = "Hello world"
let inCStr = str.cString(using: .utf8)!
var compressedStr = [Int8](repeating: 0, count: 128)
let compressedStrLen = shoco_compress(inCStr, inCStr.count - 1, &compressedStr, compressedStr.count - 1)
var decompressedStr = [Int8](repeating: 0, count: 128)
shoco_decompress(compressedStr, compressedStrLen, &decompressedStr, decompressedStr.count - 1)
let str2 = String(cString: decompressedStr)
print(str2) // Hello world