条件绑定的初始化程序必须具有可选类型,而不是“AVAudioInputNode”

Posted

技术标签:

【中文标题】条件绑定的初始化程序必须具有可选类型,而不是“AVAudioInputNode”【英文标题】:Initializer for conditional binding must have Optional type, not 'AVAudioInputNode' 【发布时间】:2018-03-13 02:54:14 【问题描述】:

导致上述错误的原因以及如何解决?

func cancelRecording() 
        audioEngine.stop()
        if let node = audioEngine.inputNode 
            node.removeTap(onBus: 0)
        
        recognitionTask?.cancel()
    

【问题讨论】:

【参考方案1】:

编译器告诉你不能使用 if let 因为它完全没有必要。您没有任何要解包的选项:audioEngine 不是可选的,inputNode 属性也不是可选的。 if let 专门用于解包选项。如果您想创建一个名为 node 的新常量,只需这样做:

if let node = audioEngine?.inputNode 
   node.removeTap(onBus: 0)

【讨论】:

先生,我想问你一些关于alexa语音服务的问题 @JhonDonCaylog 是的,请告诉 alexa 语音服务您想要什么? 您是否尝试过将 alexa 语音服务集成到 ios 应用程序中? 还没有,但你可以告诉我你面临的问题吗? 我想将使用 api.ai 的 alexa 语音服务集成到 Ios App Sir 中。

以上是关于条件绑定的初始化程序必须具有可选类型,而不是“AVAudioInputNode”的主要内容,如果未能解决你的问题,请参考以下文章

如何修复条件绑定的初始化程序必须具有可选类型,而不是“字符串”? [复制]

条件绑定的初始化程序必须具有可选类型,而不是“UIView”

条件绑定的初始化程序必须具有可选类型,而不是“AVAudioInputNode”

条件绑定的初始化程序必须具有可选类型,而不是“UIView”

收到此错误:条件绑定的初始化程序必须具有可选类型,而不是“布尔”

Swift - 条件绑定的初始化程序必须具有可选类型,而不是 'PHFetchResult<PHAsset>'