Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在Swift 3中从AudioBufferList中提取数据_Ios_Swift_Core Audio_Swift3 - Fatal编程技术网

Ios 在Swift 3中从AudioBufferList中提取数据

Ios 在Swift 3中从AudioBufferList中提取数据,ios,swift,core-audio,swift3,Ios,Swift,Core Audio,Swift3,我试图从渲染的AudioBufferList中提取本机[Float]数组,其中音频单元的流设置为32位浮点。在Swift 1和Swift 2中,我做到了: var monoSamples = [Float]() for i in 0..<Int(inNumberFrames) { withUnsafePointer(to: &bufferList.mBuffers.mData, { let ptr = $0

我试图从渲染的AudioBufferList中提取本机[Float]数组,其中音频单元的流设置为32位浮点。在Swift 1和Swift 2中,我做到了:

    var monoSamples = [Float]()
    for i in 0..<Int(inNumberFrames) {
        withUnsafePointer(to: &bufferList.mBuffers.mData, {
            let ptr = $0
            let newPtr = ptr + i
            let sample = unsafeBitCast(newPtr.pointee, to: Float.self)
            monoSamples.append(sample)
        })
    }
但我得到了一个编译错误:

表达式类型“[Float]”在没有更多上下文的情况下不明确

做这件事的正确方法是什么?

试试这可能是什么

是的,你是正确的,你必须输入你的
$0
作为
UnsafePointer
。选择任何类型的
UnsafePointer
初始值设定项,并在此处传递该值,以便于我在此处使用
bitPattern
进行解释

UnsafeBufferPointer<Float>(start: UnsafePointer(bitPattern: i), count: Int(inNumberFrames))
UnsafeBufferPointer(开始:UnsafePointer(位模式:i),计数:Int(inNumberFrames))

如果您将代码取消转换为Swift 2,它将不起作用。将代码转换为Swift 3时,您可能修改过多

试试这个:

var monoSamples = [Float]()
let ptr = bufferList.mBuffers.mData?.assumingMemoryBound(to: Float.self)
monoSamples.append(contentsOf: UnsafeBufferPointer(start: ptr, count: Int(inNumberFrames)))

没有爱。现在的错误是:“表达式类型‘UnsafeBufferPointer’在没有更多上下文的情况下是不明确的”谢谢,但我仍然感到困惑。我们在一个不可女性化的指针闭包里,是吗?0美元到哪里去了
monoSamples=[Float](UnsafeBufferPointer(start:UnsafePointer($0),count:Int(inNumberFrames))
产生了另一个错误。下面是一个在Swift游乐场编译(应该编译)的要点:gist.github.com/anonymous/4d55cd1ec55a5a5a5f71246780f4819c94b3
var monoSamples = [Float]()
let ptr = bufferList.mBuffers.mData?.assumingMemoryBound(to: Float.self)
monoSamples.append(contentsOf: UnsafeBufferPointer(start: ptr, count: Int(inNumberFrames)))