【发布时间】:2020-11-15 21:03:42
【问题描述】:
我是 xCode/swift 的新手,所以请原谅我的经验不足。我有一个 ViewController,我的观众可以在其中收听一些音频播放。当播放器单击播放按钮时,播放是这样访问的:
@IBAction func buttonClicked(_ sender: RoundButton)
{
self.clickedButton = sender
guard let url = sender.url else {
return
}
let player = AVPlayer(url: url)
let controller = AVPlayerViewController()
controller.player = player
present(controller, animated: true) {
player.play()
}
}
我从另一个 StackOverflow 问题中得到了这段代码,所以我没有完全理解它。我的目标是能够保存 URL 和上次播放时间,以便用户可以最小化应用程序,或导航到不同的屏幕,然后能够单击“继续收听”按钮,该按钮将拉出另一个 AVPlayer最后使用的 URL。这个“继续收听”的 AVPlayer 会寻找上次播放的时间。
我知道我需要以某种方式观察第一个 AVPlayer,以便当它暂停、停止或置于后台时,我将 currentTime 保存到 NSUserDefault(我认为?)。我还需要保存 URL,因为用户可以点击许多不同的 URL。
我试过这样做,除了无法弄清楚观察结果之外,我也无法弄清楚 NSUserDefault 存在的类型不一致。我尝试在设置后将 URL NSDefault 值检索为字符串,但是当我使用 URL(string: lastPlayedURL) 将字符串转换为 URL 时,xCode 抱怨“无法将类型数据转换为预期类型的字符串”。
我使用其他 StackOverflow 问题来解决我的问题是我不明白将代码块放在哪里。我在哪里创建观察者?因为当我在“buttonClicked”的主体内创建 xCode 时,它似乎并不开心。
谢谢你听我闲聊。
【问题讨论】:
标签: ios swift xcode avplayer swift5