ios - 快速错误:无法转换“UnsafeMutablePointer”类型的值?到预期的参数类型'UnsafeMutablePointer?
问题描述
我正在开发Xcode 10 iOS 项目。我试图从 Swift 中调用一个 C 语言函数,它以指针为参数。
c函数如下,
压缩.h文件
short* Decompress(int *dataIn, int channelNum,int sample_cnt,long packet_cnt) ;
我正在尝试从MyClassfile.swift调用此方法
来自 xcode 的预期输入如下
var dataOut = Decompress(dataIn: UnsafeMutablePointer<Int32>!, channelNum: Int32, sample_cnt: Int32, packet_cnt: Int)
因为第一个参数的输入是可选类型,如“ UnsafeMutablePointer< Int32>! ”
我试图将数组转换为 UnsafeMutablePointer 类型
代码如下,
var uint32PktArray = [UInt32]()
for index in stride(from: 0, to: somebuffer.count, by: 4){
//doing some functionality here
uint32PktArray.append(value)
}
let uint32Pointer : UnsafeMutablePointer<UInt32>? = UnsafeMutablePointer<UInt32>.allocate(capacity: uint32PktArray.count)
uint32Pointer!.initialize(from: &uint32PktArray, count: uint32PktArray.count)
print(type(of: uint32Pointer))// returns UnsafeMutablePointer<UInt32>?
但输入参数需要一个可选类型,方法调用如下
var dataOut = Decompress(uint32Pointer,0, Int32(compHeaderECG0.smpl_cnt), Int(compHeaderECG0.pkt_cnt))
print(dataOut)
编译时我收到上述代码的错误,“无法转换'UnsafeMutablePointer'类型的值?' 到预期的参数类型'UnsafeMutablePointer?'”
非常感谢任何帮助。
提前致谢。
让我知道是否需要任何澄清
解决方案
推荐阅读
- google-colaboratory - 当我开始训练我的模型时,YOLO 暗网冻结
- reactjs - 在动作创建者中访问 useReducer 状态
- prolog - 我应该通过抛出实例化错误来强制执行模式声明吗?
- gradle-kotlin-dsl - 如何使用 Kotlin DSL 引用 gradle.properties 中设置的 gradle 配置?
- android - 如何通过 DialogFragment 正确传递视图外的点击?
- azure-devops - Azure Devops:模板使用序列类型参数生成作业和阶段
- sql - 3套配对排除标准
- python - 如果内部函数已经有其同名的变量Python,如何从内部函数访问封闭函数中的非局部变量
- scheme - 如何解析 Racket 中的日期字符串?
- python - 如何按元素合并元组列表?