微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – swift2 AVAudioRecorder

我正在使用 swift 2尝试以下代码,在 swift 1中应该没问题.

class NewSoundViewController: UIViewController {
required init(coder aDecoder: NSCoder) {
    let audioURL = NSURL.fileURLWithPathComponents([
        NSSearchPathForDirectoriesInDomains(.DocumentDirectory,.UserDomainMask,true)[0],"MyAudio.m4a"
    ])
    do {
        let session = AVAudioSession.sharedInstance()
        try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
    } catch {
        print("Session errors.")
    }

    do {
        let recordSettings: [String: AnyObject] = [
            AVFormatIDKey: kAudioFormatMPEG4AAC,AVSampleRateKey: 44100.0,AVNumberOfChannelsKey: 2,]
        self.audioRecorder = try AVAudioRecorder(URL: audioURL!,settings: recordSettings)
        self.audioRecorder.meteringEnabled = true
        self.audioRecorder.preparetoRecord()

    } catch let error as NSError{
        print(error.description)
    } catch {
        print("Other errors")            
    }
    super.init(coder: aDecoder)
}

我有编译错误

类型’AudioFormatID’不符合协议’AnyObject’

在AVFormatIDKey行:kAudioFormatMPEG4AAC,.

如果我注释掉该行,我通过了构建,但是遇到了运行时错误

错误域= NSOsstatusErrorDomain代码= 1718449215“操作无法完成.(Osstatus错误1718449215.)”

我还尝试了AVFormatIDKey:NSNumber(unsignedInt:kAudioFormatMPEG4AAC),并且遇到了运行时错误. Xcode似乎进入调试模式它红色突出显示self.audioRecorder =尝试AVAudioRecorder(URL:audioURL!,settings:recordSettings)并表示

线程1:EXC_BAD_ACCESS(代码= 1,地址= 0x0)

谁能帮帮我吗?

解决方法

I also tried AVFormatIDKey: NSNumber(unsignedInt: kAudioFormatMPEG4AAC)

嗯,这是正确的说法.基本上你在这里问两个问题;您已经解决的编译器错误.现在你遇到了运行时错误,但那是完全不同的事情.

至于运行时错误,它可能只是试图在模拟器上进行测试.我在设备上运行了你的代码(修复了有问题的行以便编译),这很好.

编辑在评论中,您透露您是在运行iOS 8.3的设备上测试过的.那就是问题所在!您需要在设备上进行测试,它需要是运行iOS 9的设备.然后您会发现您的代码运行时没有崩溃.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐