arrays - 数组创建导致 'Type of expression is ambiguous without more context'

标签 arrays swift swift4

我对 Swift 很陌生。如果我的问题听起来很愚蠢,请原谅。

我声明了一个结构如下:

struct RecorderState 
{
    var setupComplete: Bool
    var dataFormat: AudioStreamBasicDescription
    var queue: UnsafeMutablePointer<AudioQueueRef>
    var buffers: [AudioQueueBufferRef]
    var recordFile: AudioFileID
    var bufferByteSize: UInt32
    var currentPacket: Int64
    var isRunning: Bool
    var recordPacket: Int64
    var errorHandler: ((NSError) -> Void)?
}

现在我需要编写类的 init 方法来初始化其中的结构。

class SimplePCMRecorder : NSObject
{
    private var recorderState: RecorderState

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

问题是,错误“表达式类型在没有更多上下文的情况下不明确”继续显示在 buffers: Array<AudioQueueBufferRef>(repeating: 0, count: numberBuffers) 行上。

enter image description here

我尝试了其他方法,但还是一样。

enter image description here

从我在这里读到的内容 Error: 'Type of expression is ambiguous without more context'是编译器不知道对象的类型,因此它显示错误。但在这里,我已经声明了。

我尝试通过在构造函数方法后面添加 as 来再次转换它,但仍然不起作用。

enter image description here

我不明白为什么。我已将缓冲区变量的类型声明为 Array包含AudioQueueBufferRef 。但为什么编译器仍然无法检测到这一点?

最佳答案

由于 Martin R's 上面评论。

class SimplePCMRecorder : NSObject
{
    private var recorderState: RecorderState
    init(numberBuffers: Int)
    {

        self.recorderState = RecorderState(
            setupComplete: false,
            dataFormat: AudioStreamBasicDescription(),
            queue: UnsafeMutablePointer<AudioQueueRef>.allocate(capacity: 1),
            buffers: Array<UnsafeMutablePointer<AudioQueueBuffer>>(repeating: UnsafeMutablePointer<AudioQueueBuffer>(bitPattern: 0)! , count: numberBuffers),
            recordFile:AudioFileID(bitPattern: 0)!,
            bufferByteSize: 0,
            currentPacket: 0,
            isRunning: false,
            recordPacket: 0,
            errorHandler: nil
        )
    }
}

关于arrays - 数组创建导致 'Type of expression is ambiguous without more context',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47690452/

相关文章:

ios - 尝试显示 UIAlertController 并显示消息 : Terminating app due to uncaught exception 'NSInvalidArgumentException' 时应用程序崩溃

ios - 如何在 swift 4 中设置对 collectionView 的关注?

多维数组上的 PHP Array_Sum

java - 打印两个 json 数组之间的差异

ios - 如何在我的 Swift 应用程序的其他地方使用 locationManager 函数的经度和纬度值

ios - 线程 1 : Fatal error: Unexpectedly found nil while unwrapping an Optional value when testing cocoapod

ios - SwiftUI View 修改器 : How to create view modifier functions without using View extensions?

ios - 当我在 DateFormat 上设置 `HH:mm:ss` 时,在极少数情况下我会得到 `22:42:31 AM`。 ` AM` 是意外的。我该如何解决?

javascript - 数组到对象单行

java - 如何获取用户输入,将其添加到新扫描仪,然后将输入扫描到数组中?