我想从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上搜索过,但没有找到解决方案。我尝试重写和谷歌的东西,但没有解决。
有谁能告诉我如何解决这个问题?
答案 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])
}