【发布时间】:2020-03-22 08:34:33
【问题描述】:
我正在尝试使用 Swift 编写一个围绕 libssh2 的包装器。以下代码用于通过 SFTP 删除文件。
func removeFile(_ path: String) {
let data = path.data(using: String.Encoding.utf8)!
let result = data.withUnsafeBytes { (pointer: UnsafePointer<Int8>) -> Int in
return libssh2_sftp_unlink_ex(sftpHandle, pointer, data.count)
}
}
对于pointer: UnsafePointer<Int8>,我收到以下错误消息:
'UnsafePointer<Int8>' is not convertible to 'UnsafePointer<_>
我发现this 线程关于UInt8 的类似问题。我尝试删除演员,但只是得到下一个错误:
'Swift.UnsafePointer<_>' is not convertible to 'Swift.UnsafePointer<_>'
使用虚拟指针在闭包外运行libssh2_sftp_unlink_ex(sftpHandle, pointer, data.count) 有效。
我还找到了this关于将字符串转换为UInt8的答案,问题是我无法将它移植到Int8。关于如何正确转换指针的任何想法?
【问题讨论】:
标签: swift libssh2 unsafe-pointers