session.setPreferredInput 在 Swift 中?
session.setPreferredInput in Swift?
我正在尝试为我的 AVAudioEngine 设置首选输入。我有以下代码:
var iphoneInput: AVAudioSessionPortDescription = AVAudioSession.sharedInstance().availableInputs[0] as! AVAudioSessionPortDescription
var error: NSError?
session.setPreferredInput(inPort: iphoneInput, error: error)
但是 Xcode 一直给我最后一行的错误,指出它不能使用类型为“(AVAudioSessionPortDescription, NSError?)”的参数列表调用 setPreferredinput
我假设它需要一个 NSErrorPointer 来表示错误,但我不知道如何在 swift 中创建一个。这是我的问题吗?如果是,我该如何创建一个?谢谢!
在变量前加一个&
字符使其成为指针:
var myError: NSError?
session.setPreferredInput(iphoneInput, error: &myError)
if myError == nil {
// do stuff
}
注意:在 Swift 中,您不必使用方法的第一个参数名称。
for 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 ")
}
}
我正在尝试为我的 AVAudioEngine 设置首选输入。我有以下代码:
var iphoneInput: AVAudioSessionPortDescription = AVAudioSession.sharedInstance().availableInputs[0] as! AVAudioSessionPortDescription
var error: NSError?
session.setPreferredInput(inPort: iphoneInput, error: error)
但是 Xcode 一直给我最后一行的错误,指出它不能使用类型为“(AVAudioSessionPortDescription, NSError?)”的参数列表调用 setPreferredinput
我假设它需要一个 NSErrorPointer 来表示错误,但我不知道如何在 swift 中创建一个。这是我的问题吗?如果是,我该如何创建一个?谢谢!
在变量前加一个&
字符使其成为指针:
var myError: NSError?
session.setPreferredInput(iphoneInput, error: &myError)
if myError == nil {
// do stuff
}
注意:在 Swift 中,您不必使用方法的第一个参数名称。
for 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 ")
}
}