我正在从 swift 调用目标 c 类中的函数。
-(char *)decrypt:(char *)crypt el:(int)el{}
当从 swift 调用这个函数时,它要求一个
UnsafeMutablePointer<Int8>
作为参数“crypt”的值'crypt' 的值来自服务器,它是一个 base64 编码的字符串。所以我解码了那个字符串并得到了一个 Data 对象。
let resultData = Data(base64Encoded: base64String)
现在我需要将此数据传递给上述函数。我试图将此 Data 对象转换为
UnsafeMutablePointer<Int8>
resultData?.withUnsafeBytes { (u8Ptr: UnsafeMutablePointer<Int8>) in
let decBytes = tea?.decrypt(u8Ptr , el: el)}
但它没有编译。给出以下错误
我对 objective-c 知之甚少。那么任何人都可以帮助我将此参数传递给目标 c 函数。
最佳答案
您必须将 UnsafeMutablePointer
更改为 UnsafePointer
不安全指针
resultData?.withUnsafeBytes {(bytes: UnsafePointer<CChar>)->Void in
//Use `bytes` inside this closure
}
不安全的可变指针
var data2 = Data(capacity: 1024)
data2.withUnsafeMutableBytes({ (bytes: UnsafeMutablePointer<UInt8>) -> Void in
//Use `bytes` inside this closure
})
关于ios - Swift 将数据转换为 UnsafeMutablePointer<Int8>,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50285026/