我目前正在Udacity上“使用Swift开发iOS应用程序入门”课程。我已经完全复制了代码,直到我们完成音频录制。下面是他们告诉你要输入的内容:
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条答案
按热度按时间lstz6jyr1#
我刚刚完成了这门课程。所以基本上你特灵做的是在不同的屏幕之间传递数据。试着理解你要达到什么目的,这有助于你更好地理解代码。
第一个屏幕的主要任务是录制音频,任务完成后,将完成任务的所有信息存储到一个名为
RecordedAudio
的对象中,包括var title: String!
和var filePathURL: NSURL!
的信息。存储完录制信息后,我们准备将其传递给下一个屏幕的控制器,即PlayScreenController
。首先,我们必须访问控制器,然后传递数据。现在一切都准备好了,我们可以执行
segue
。在执行segue期间,我们必须提供segue的身份和谁是发送者。注意
performSegueWithIdentifier
中的sender对象,这就是我们可以将prepareSegue
中的send转换为RecordedAudio
对象的原因。注:请记住在
PlayScreenViewController
中定义var audioData: RecordedAudio!
,否则您无法将数据传递到第二个屏幕,因为没有变量可以保存您尝试传递的数据。