我正在从 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/

10-10 21:10