Swift 错误:类 RecordSoundsViewController 没有初始化器
Posted
技术标签:
【中文标题】Swift 错误:类 RecordSoundsViewController 没有初始化器【英文标题】:Swift error : class RecordSoundsViewController has no initializers 【发布时间】:2015-02-25 20:14:59 【问题描述】:class RecordSoundsViewController: UIViewController, AVAudioRecorderDelegate
@IBOutlet weak var recordButton: UIButton!
@IBOutlet weak var recodinginProgress: UILabel!
@IBOutlet weak var stopButton: UIButton!
var audioPlayer: AVAudioPlayer!
var recordAudio: RecordedAudio!
var audioRecorder:AVAudioRecorder
override func viewDidLoad()
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
override func didReceiveMemoryWarning()
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
override func viewWillAppear(animated: Bool)
//hide the stop button
stopButton.hidden = true
recordButton.enabled = true
@IBAction func recordAudio(sender: UIButton)
recordButton.enabled = false
stopButton.hidden = false
recodinginProgress.hidden = false
//TODO: Record the user"s voice
let dirPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory,
.UserDomainMask, true)[0] as String
let currentDateTime = NSDate()
let formatter = NSDateFormatter()
formatter.dateFormat = "ddMMyyyy-HHmmss"
let recordingName = formatter.stringFromDate(currentDateTime)+".wav"
let pathArray = [dirPath, recordingName]
let filePath = NSURL.fileURLWithPathComponents(pathArray)
println(filePath)
var session = AVAudiosession.sharedInstance()
session.setCategory(AVAudioSessionCategoryPlayAndRecord, error: nil)
audioRecorder = AVAudioRecorder(URL: filePath, settings: nil, error: nil)
audioRecorder.delegate = self
audioRecorder.meteringEnabled = true
audioRecorder.prepareToRecord()
audioRecorder.record()
我不知道我做错了什么。我的错误即将出现在我的课堂上。
它说
类 RecordSoundsViewController 在 RecordSoundsViewController 上没有初始化器:UIViewController, AVAudioRecorderDelegate
【问题讨论】:
【参考方案1】:编译器的错误消息有点糟糕。您看到错误的原因是您有一个没有默认值的属性。
在 Swift 中,所有值都需要有一个默认值,除非它是可选的。
在你的情况下,它是这个属性:var audioRecorder:AVAudioRecorder
在您的情况下,我会将这个属性设为可选:var audioRecorder:AVAudioRecorder?
并确保在使用时检查 nil。或者让它成为一个隐式展开的可选(如果你知道总会有一个值):var audioRecorder:AVAudioRecorder!
【讨论】:
以上是关于Swift 错误:类 RecordSoundsViewController 没有初始化器的主要内容,如果未能解决你的问题,请参考以下文章
类 AppDelegate: UIResponder, UIApplicationDelegate SWIFT 中的 SIGABIRT 错误
Interface Builder 文件 Swift/Parse 错误中的未知类 PFQueryTableView
在 Swift 单元测试中,我在 App 和单元测试目标之间遇到类转换错误