gpt4 book ai didi

ios - 快速播放录制的音频

转载 作者:搜寻专家 更新时间:2023-10-31 22:35:44 24 4
gpt4 key购买 nike

我目前正在通过 Udacity 学习“Intro to iOS App Development with Swift”类(class)。我已将代码复制到我们完成录制音频的那一点。这是他们告诉你输入的内容:

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”。我对编程还比较陌生,所以任何建议都会有所帮助。

最佳答案

enter image description here

我刚刚完成了这门类(class)。所以基本上你要做的是在不同的屏幕之间传递数据。尝试了解您要实现的目标,这有助于您更好地理解代码。

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

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 中的 sender 对象,这就是为什么我们可以将 prepareSegue 中的发送转换为 RecordedAudio 对象的原因。

注意:记得在 PlayScreenViewController 中定义 var audioData: RecordedAudio! 否则你无法将数据传递到第二个屏幕,因为那里没有变量可以保存您要传递的数据。

关于ios - 快速播放录制的音频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28508675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com