Xcode 看看这个,告诉我我错过了什么
我有一个密码,按下按钮就会发出声音。它在模拟器上工作,但是当我把它发送到我的设备进行测试时,我得到了这个错误;EXC\u错误访问(代码=1,地址=0x48)。我有最新版本的xcode,我相信它是swift 5???。任何帮助都将不胜感激。还请注意,我没有付费的开发者帐户Xcode 看看这个,告诉我我错过了什么,xcode,Xcode,我有一个密码,按下按钮就会发出声音。它在模拟器上工作,但是当我把它发送到我的设备进行测试时,我得到了这个错误;EXC\u错误访问(代码=1,地址=0x48)。我有最新版本的xcode,我相信它是swift 5???。任何帮助都将不胜感激。还请注意,我没有付费的开发者帐户 import UIKit import AVFoundation class ViewController: UIViewController { var musicEffect: AVAudioPlayer = AV
import UIKit
import AVFoundation
class ViewController: UIViewController {
var musicEffect: AVAudioPlayer = AVAudioPlayer()
@IBOutlet weak var muffin: UIImageView!
@IBOutlet weak var muffin_text: UIImageView!
@IBOutlet weak var muffin_button: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let musicFile = Bundle.main.path(forResource: "muffin", ofType: ".mp3")
do {
try musicEffect = try AVAudioPlayer(contentsOf: URL (fileURLWithPath: musicFile!))
}
catch {
print(error)
}
}
@IBAction func click(_ sender: Any) {
musicEffect.play()
}
}
我是Xcode和Swift的新手,但我会删除(.)mp3。我相信圆点是暗含的,不用写 它在模拟器上工作,但是当我把它发送到我的设备进行测试时,我得到了这个错误 iOS和macOS之间的一大区别是,iOS设备上的文件系统区分大小写,而macOS上的许多(但不是所有)文件系统不区分大小写。每当我看到类似“它在模拟器上工作,但在设备上不工作”这样的问题时,我认为这可能与读取文件有关 因此,检查应用程序中文件
muffin.mp3
的大小写。它实际上是Muffin.mp3
还是Muffin.mp3
还是Muffin.mp3
还是类似的?如果它不完全是muffin.mp3
,而是有一些大写字母,那就可以解释为什么找不到该文件。在您尝试播放之前,您的代码不会检查musicefect
中的值是否有效,这就解释了您可能会出现错误的原因
更新:在看了@Larme的评论后,我认为如果您使用的是iOS 13.1,那么问题更可能是不正确的初始值设定项。例如,见
AVAudioPlayer
没有普通的init()
初始值设定项,因此需要使用一些数据对其进行初始化,例如:
`var musicEffect: AVAudioPlayer = AVAudioPlayer(data: someAudioData)`
显示堆栈跟踪。
var musicefect:AVAudioPlayer=AVAudioPlayer()
更改该行。参考。在SO(包括Swift代码)Hi中有两个链接问题不起作用。我在调试控制台中得到这个。musicFile String?”/private/var/containers/Bundle/Application/E5CE4ADD-5115-49C1-AD19-73249EE23790/Muffin Time.app/Muffin.mp3“我应该在里面放些什么?我放的任何东西都会得到一个未解决的标识符错误?@TomFellas你可以将musicefect
作为一个隐式展开的可选选项,比如var musicefect:AVAudioPlayer!”代码>,然后确保在使用它之前为它赋值。