4

我想从 iPhone 连接 Alexa,因为我使用的是在Github上用 swift 2.2 编写的示例

所以我需要把它转换成 Swift 3.0

从 Swift 2.2 迁移到 Swift 3.0 从 xcode 完成,几乎解决了所有错误,现在剩下的唯一错误与 AudioQueueBufferRef 有关

斯威夫特 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:表达式类型“Array”(又名“Array>”)在没有更多上下文的情况下是模棱两可的

Github 上 Swift 2.2 的 SimplePCMRecorder

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

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

4

1 回答 1

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])
}
于 2017-06-02T14:44:09.200 回答