用swift播放录制的音频

时间:2015-02-13 21:02:16

标签: ios iphone cocoa-touch swift ios8

我目前正在使用Swift""介绍iOS应用程序开发。当然通过Udacity。我已将代码完全复制到我们完成录制音频的位置。这是他们告诉你输入的内容:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {         if (segue.identifier == "stopRecording"){             
let playVC:PlayViewController = segue.destinationViewController as PlayViewController             
let data = sender as RecordedAudio             
playVC.receivedAudio = data         }     } 

然而,它返回编译器错误并要求我在as之后添加感叹号。当我运行该程序时,它说"我在打开一个可选的"时发现了nil。我对编程比较陌生,所以任何建议都会有所帮助。

1 个答案:

答案 0 :(得分:2)

enter image description here

我刚刚完成了这门课程。所以基本上你要做的就是在不同的屏幕之间传递数据。试着了解你要做什么,这有助于你更好地理解代码。

第一个屏幕的主要任务是录制音频,在任务完成后,将有关已完成任务的所有信息存储到名为RecordedAudio的对象中。所包含的信息包括var title: String!var filePathURL: NSURL!。在我们存储录制信息之后,我们准备将其传递到下一个屏幕的控制器,即PlayScreenController。首先,我们必须访问控制器而不是传递数据。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?)
{
    // Checking segue if there are more than one
    if (segue.identifier == "stopRecording") {
        // Get the PlayScreenController access
        let playSoundVC = segue.destinationViewController
        as playScreenViewController

        // Cast sender into a RecordedAudio Object
        let data = sender as RecordedAudio

        // Passing the data to PlayScreen
        playSoundVC.audioData = data
    }
}

现在一切准备就绪,我们可以执行segue。在执行segue期间,我们必须提供segue的身份以及谁是发送者。

var recordedAduio = RecordedAduio()
recordedAduio.filePathURL = recorder.url
recordedAudio.title = recorder.url.lastPathComponent    

self.performSegueWithIdentifier("stopRecording", sender: recordedAudio)

注意performSegueWithIdentifier中的发件人对象,我们可以将prepareSegue中的发送转换为RecordedAudio对象。

注意:请记住在var audioData: RecordedAudio!中定义PlayScreenViewController,否则您无法将数据传递到第二个屏幕,因为没有变量可以保存您所拥有的数据试图通过。

如果您仍然不理解,请在下面留言。

快乐的编码,不要因为投票而气馁。

还有一件事,输入代码比应对和粘贴更好。