Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/104.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 我得到错误:类型为';捆绑';没有成员';pathForResources';_Ios_Swift - Fatal编程技术网

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
initializer
throws

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中,但是出现了一个错误,说需要声明。