Swift 中的 session.setPreferredInput?

Posted

技术标签:

【中文标题】Swift 中的 session.setPreferredInput?【英文标题】:session.setPreferredInput in Swift? 【发布时间】:2015-05-04 15:18:09 【问题描述】:

我正在尝试将首选输入设置为我的 AVAudioEngine。我有以下代码:

var iphoneInput: AVAudiosessionPortDescription = AVAudioSession.sharedInstance().availableInputs[0] as! AVAudioSessionPortDescription

var error: NSError?

session.setPreferredInput(inPort: iphoneInput, error: error)

但是 Xcode 一直给我最后一行的错误,说明它不能使用类型为“(AVAudioSessionPortDescription,NSError?)”的争论列表调用 setPreferredinput

我假设它需要一个 NSErrorPointer 来处理错误,但我不知道如何快速创建一个。这是我的问题吗?如果是,我该如何创建?谢谢!

【问题讨论】:

【参考方案1】:

在变量前添加& 字符使其成为指针:

var myError: NSError?
session.setPreferredInput(iphoneInput, error: &myError)
if myError == nil 
    // do stuff

注意:在 Swift 中,您不必使用方法的第一个参数的名称。

【讨论】:

这行得通!我只是将其保留为 nil,但这是正确的答案。谢谢!【参考方案2】:

对于 swift 3 不起作用......你必须这样做(从 ADC 翻译: https://developer.apple.com/library/content/qa/qa1799/_index.html )

private func setupSession()


let session = AVAudioSession.sharedInstance()

// setup session:
do 
    try session.setCategory(AVAudioSessionCategoryPlayAndRecord, with: .defaultToSpeaker)
    try session.setActive(true)

catch _



// https://developer.apple.com/library/content/qa/qa1799/_index.html

// let portDescr = AVAudioSessionPortDescription()

// headers:
// AVAudioSessionPortLineIn: String // Line level input on a dock connector
// AVAudioSessionPortBuiltInMic: String // Built-in microphone on an iOS device
// AVAudioSessionPortHeadsetMic: String // Microphone on a wired headset.  Headset refers to an accessory that has headphone outputs paired with a microphone.

// You cannot set directly..
// portDescr.portType = AVAudioSessionPortLineIn

guard let availableInputs = session.availableInputs else 
    return



var mic : AVAudioSessionPortDescription? = nil
for input in availableInputs       
    if input.portType == AVAudioSessionPortBuiltInMic
        mic = input
    


guard mic != nil else
    return


do 
    try session.setPreferredInput(mic)
catch _ 
    print("cannot set mic ")
   

【讨论】:

以上是关于Swift 中的 session.setPreferredInput?的主要内容,如果未能解决你的问题,请参考以下文章

swift: Swift 中的 SnapKit 不起作用

swift中的 isKindofClass

swift Swift中的变量

swift Swift中的数组

swift SWIFT中的变量

swift Swift4中的Codable