SimplePCMRecorder中的AudioQueueBufferRef在swift 3中显示错误

时间:2017-03-21 09:59:40

标签: ios iphone swift alexa alexa-voice-service

我想从iPhone连接Alexa,因为我使用的是一个用Github上的swift 2.2编写的样本

所以我需要将其转换为Swift 3.0

从xcode迁移到Swift 3.0到几乎所有的错误都解决了,现在唯一的错误就是与AudioQueueBufferRef相关

Swift 2.2:

self.recorderState = RecorderState(
            setupComplete: false,
            dataFormat: AudioStreamBasicDescription(),
            queue: UnsafeMutablePointer<AudioQueueRef>.alloc(1),
            buffers: Array<AudioQueueBufferRef>(count: numberBuffers, repeatedValue: nil),
            recordFile: AudioFileID(),
            bufferByteSize: 0,
            currentPacket: 0,
            isRunning: false,
            recordPacket: 0,
            errorHandler: nil)

Swift 3.0 :(仅适用于param buffers

let audioBufferQueue = Array<AudioQueueBufferRef>(repeating: nil, count: numberBuffers)

并且在swift 2.2中它工作正常,但在swift 3.0中它显示错误

  

/ Users / macbookpro / Downloads / iOS-Alexa-master copy / iOS   Alexa / AVS / SimplePCMRecorder.swift:28:32:表达式   &#39;阵列&#39; (又名   &#39;数组&gt;&#39;)没有模棱两可   更多背景

SimplePCMRecorder of Swift 2.2 on Github

我在谷歌和stackoverflow上搜索过,但没有找到解决方案。我尝试重写和谷歌的东西,但没有解决。

有谁能告诉我如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

在Swift 3中,使用AudioQueueBufferRef?代替AudioQueueBufferRef

let buffers = Array<AudioQueueBufferRef?>(repeating: nil, count: numberBuffers)

// and allocate each buffer
for i in 0 ..< buffers.count {
  AudioQueueAllocateBuffer(inQueue!, bufferSize, &buffers[i])
}