swift代码不能在Xcode 7中工作-不能调用初始化器



我有一段代码,以前在Swift 1.2中工作,但现在不在Swift 2中。我试图改变它,但我得到一个错误:error

"Cannot invoke initialization…",

同样,这里是代码。你能让我知道我做错了什么吗?

import UIKit
import AVFoundation
class RecordViewController: UIViewController {
    required init?(coder aDecoder: NSCoder) {
        var baseString : String = NSSearchPathForDirectoriesInDomains(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomainMask.UserDomainMask, true)[0] as String
        self.audioURL = "sound.m4a"
        var pathComponents = [baseString, self.audioURL]
        var audioNSURL = NSURL.fileURLWithPathComponents(pathComponents)
        var session = AVAudioSession.sharedInstance()
        do {
            try session.setCategory(AVAudioSessionCategoryPlayAndRecord)
        } catch (_) {
        }
    //        session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: nil)
        var recordSettings: [NSObject : AnyObject] = Dictionary()
    //        recordSettings[AVFormatIDKey] = kAudioFormatMPEG4AAC
        recordSettings[AVFormatIDKey] = NSNumber(unsignedInt: kAudioFormatMPEG4AAC)
        recordSettings[AVSampleRateKey] = 44100.0
        recordSettings[AVNumberOfChannelsKey] = 2
    //        self.audioRecorder = AVAudioRecorder(URL: audioNSURL, settings: recordSettings, error: nil)
        self.audioRecorder = AVAudioRecorder()
        do {
            self.audioRecorder = try AVAudioRecorder(URL: audioNSURL!, settings: recordSettings)
        } catch (_) {
        }
        self.audioRecorder.meteringEnabled = true
        self.audioRecorder.prepareToRecord()
        super.init(coder: aDecoder)
    }
    @IBOutlet weak var recordButton: UIButton!
    @IBOutlet weak var playButton: UIButton!
    @IBOutlet weak var saveButton: UIBarButtonItem!
    var audioRecorder : AVAudioRecorder
    var audioURL = ""
    override func viewDidLoad() {
        super.viewDidLoad()
        self.playButton.enabled = false
        self.saveButton.enabled = false
        // Do any additional setup after loading the view.
    }
    @IBAction func cancelTapped(sender: AnyObject) {
        self.dismissViewControllerAnimated(true, completion: nil)
    }
    @IBAction func saveTapped(sender: AnyObject) {
    }
    @IBAction func recordTapped(sender: AnyObject) {
        self.playButton.enabled = true
    }
    @IBAction func playTapped(sender: AnyObject) {
    }
}

settings参数的类型应该是[String: AnyObject],因为初始化器声明如下:

public init(URL url: NSURL, settings: [String : AnyObject]) throws

因此解决这个问题的方法之一是将recordSettings的类型改为[String: AnyObject]

var recordSettings: [String: AnyObject] = Dictionary()

最新更新