gpt4 book ai didi

ios - 该应用程序完美运行 6-8 次点击,之后它崩溃了

转载 作者:行者123 更新时间:2023-12-01 16:05:37 26 4
gpt4 key购买 nike

我对 iOS 编码很陌生。我正在尝试为我的 child 构建一个应用程序。我有一些动物的照片和这些动物的声音。我设法编写了应用程序:每次我点击屏幕时,图片都会发生变化,与图片相关的声音也会发生变化。一段时间后,我收到此错误并且应用程序挂起:

2020-05-01 12:21:31.111411+0200 Animals For Kids[1758:47571] Fatal error: Unexpectedly found nil while unwrapping an Optional value: file /Users/andreitomescu/Desktop/iOS Developing - Udemy/Proiecte diverse/Animals For Kids/Animals For Kids/ViewController.swift, line 21

第 21 行的代码是:
    func playSound(animalName: String) {
let url = Bundle.main.url(forResource: animalName, withExtension: "wav", subdirectory: "Sounds")
**player = try! AVAudioPlayer(contentsOf: url!)** / this is the line where the error points to
player.play()
}

你能帮我弄清楚这个吗?

enter image description here

代码第 1 部分:
@IBAction func imageButton(_ sender: UIButton) {

func playSound(animalName: String) {
let url = Bundle.main.url(forResource: animalName, withExtension: "wav", subdirectory: "Sounds")
player = try! AVAudioPlayer(contentsOf: url!)
player.play()
}

代码第 2 部分:
 let fileManager = FileManager.default
let bundleURL = Bundle.main.bundleURL
let assetURL = bundleURL.appendingPathComponent("Pictures")

do {
let contents = try fileManager.contentsOfDirectory(at: assetURL, includingPropertiesForKeys: [URLResourceKey.nameKey, URLResourceKey.isDirectoryKey], options: .skipsHiddenFiles)

for item in contents
{
fileName.append(String(item.lastPathComponent.dropLast(4)))

animalName = fileName.randomElement()!

代码第 3 部分:
 let imageName = animalName
let image = UIImage(named: imageName)
let imageView = UIImageView(image: image!)
imageView.frame = CGRect(x: 0, y: 360, width: 414, height: 414)
view.addSubview(imageView)

}
}
catch let error as NSError {
print(error)
}
// playSound(animalName: animalName)
print(animalName)

最佳答案

这是由于强制解包一个 nil 值,因为错误明确指出

error: Unexpectedly found nil while unwrapping an Optional value



但是为什么该应用程序可以在大约 8 次点击后运行,然后突然崩溃?所有文件都在 URL 中?

这是因为前 8 个 url 是好的广告加载第 9 个 url 已损坏指定的 URL 位置或无法加载内容。

因此,请查看您的应用程序崩溃所在的 url ..

从您的代码中删除强制转换.. 使用以下更新播放声音方法并检查打印语句并让我知道
var player: AVAudioPlayer?
func playSound(animalName: String) {

guard let url = Bundle.main.url(forResource: animalName, withExtension: "wav", subdirectory: "Sounds") else {
print("path not correct")
return
}
do {
player = try AVAudioPlayer(contentsOf: url)
player?.play()
} catch {
print("url is not correct")
}

}

关于ios - 该应用程序完美运行 6-8 次点击,之后它崩溃了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61540930/

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