Ios 我得到错误:类型为';捆绑';没有成员';pathForResources';
以下是导致错误的代码:Ios 我得到错误:类型为';捆绑';没有成员';pathForResources';,ios,swift,Ios,Swift,以下是导致错误的代码: import UIKit import AVFoundation class ViewController: UIViewController { var BackgroundAudio = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: Bundle.mainBundle.pathForResources( "Music", ofType: "mp3")!),error: nil) } 编辑: 我正在创
import UIKit
import AVFoundation
class ViewController: UIViewController {
var BackgroundAudio = AVAudioPlayer(contentsOfURL: NSURL(fileURLWithPath: Bundle.mainBundle.pathForResources( "Music", ofType: "mp3")!),error: nil)
}
编辑:
我正在创建一个带音频的石头剪纸游戏,下面是我的代码:
import UIKit
import AVFoundation
class ViewController: UIViewController {
let backgroundAudio : AVAudioPlayer = {let url = Bundle.main.url(forResource: "Music", withExtension: "mp3")!
return try! AVAudioPlayer(contentsOf: url)
}()
let controller = ViewController()
controller.backgroundAudio.play()
@IBOutlet weak var cpuImage: UIImageView!
@IBOutlet weak var playerImage: UIImageView!
@IBOutlet weak var cpuScore: UILabel!
@IBOutlet weak var playerScore: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
@IBAction func rockButtonPressed(_ sender: Any) {
playerMove = 1
playerImage.image = UIImage(named: "playerRock.png")
computerChoice(cpuImage: cpuImage)
determineWinner(player: playerScore, cpu: cpuScore)
}
@IBAction func paperButtonPressed(_ sender: Any) {
playerMove = 2
playerImage.image = UIImage(named: "playerPaper.png")
computerChoice(cpuImage: cpuImage)
determineWinner(player: playerScore, cpu: cpuScore)
}
@IBAction func scissorButtonPressed(_ sender: Any) {
playerMove = 3
playerImage.image = UIImage(named: "playerScissor.png")
computerChoice(cpuImage: cpuImage)
determineWinner(player: playerScore, cpu: cpuScore)
}
}
希望这有帮助您在第一行中调用的函数不再是这样命名的。改用这个:
var BackgroundAudio = AVAudioPlayer(contentsOf: NSURL(fileURLWithPath: Bundle.main.path(forResource: "Music", ofType: "mp3")!),error: nil)
您混淆了Swift 2和Swift 3代码,即使在Swift 2中也没有
pathForResources
(复数)API
如果要查找URL,请使用与URL相关的API:
Bundle.main.url(forResource: "Music", withExtension: "mp3")
而AVAudioPlayer
initializerthrows
do {
let url = Bundle.main.url(forResource: "Music", withExtension: "mp3")!
let backgroundAudio = try AVAudioPlayer(contentsOf: url)
} catch {
print(error)
}
在这种情况下,你甚至可以写
let url = Bundle.main.url(forResource: "Music", withExtension: "mp3")!
let backgroundAudio = try! AVAudioPlayer(contentsOf: url)
因为初始化器将始终成功(如果没有成功,则是设计错误)
编辑:
这是一种使用闭包创建音频播放器的方法
class ViewController: UIViewController {
let backgroundAudio : AVAudioPlayer = {
let url = Bundle.main.url(forResource: "Music", withExtension: "mp3")!
return try! AVAudioPlayer(contentsOf: url)
}()
}
然后播放声音
let controller = ViewController()
controller.backgroundAudio.play()
PS:如果存在本机Swift副本(
URL
),请不要使用NS…
类,如NSURL
)我这样做了,但我得到了以下错误:参数标签(contentsOfURL:,error:)与任何可用的Overloads@Gammaslash132这个答案并不是说要使用内容URL:
。它声明使用内容:
@Terje-不要使用NSURL
。使用URL
。谢谢。我后来修复了它,但目前正在尝试其他人的建议。不过谢谢你。是的,我看到有人接了电话,让你走得更远,所以很酷:)。顺便说一句:如果你将来遇到这样的问题,一个很好的解决方法就是查看你试图使用的函数或构造函数的文档,或者在一行新的代码中键入它,比如“AVAudioPlayer”(“看看自动完成帮了你什么!”我复制了你的代码,比如Bundle.main.url(forResource:“Music”),带扩展名:“mp3”)执行{let url=Bundle.main.url(用于资源:“Music”,带扩展名:“mp3”)!let backgroundAudio=try AVAudioPlayer(contentsOf:url)}捕获{print(error)}我得到了预期的错误声明。您无法将此代码放在类的顶层。请将其放在类似viewdiload
的方法中,或者懒洋洋地声明播放机。我按照您所说的做了并运行了它,但没有声音。我缺少了什么吗?我复制了您的包。main.url(forResource:“Music”,扩展名为:“mp3”)怎么办{let url=Bundle.main.url(用于资源:“音乐”,扩展名为:“mp3”)!let backgroundAudio=try AVAudioPlayer(contentsOf:url)}捕获{print(error)}代码。谢谢。您需要调用play()
在播放器上播放声音。我更新了答案,向您展示了使用闭包创建播放器的方法。使用闭包,您可以将代码放在类的顶层。非常抱歉,请将let controller=ViewController()controller.backgroundAudio.play()放在哪里部分。我把它放在视图中,确实加载了部分,但是没有声音。我也把它放在类viewcontroller中,但是出现了一个错误,说需要声明。