如何在Swift中随机播放Xcode11数组中的音频文件?

How do I play audio files from an array at random in Swift in Xcode11?

我的应用程序中有一个按钮,我想随机播放一系列声音文件。我已经按照类似帖子中的说明进行操作,但是当我按下播放按钮时,它会在启动模拟器时重复播放随机声音文件。它不会在每次按下按钮时随机播放它们。下面是我 ViewController 的完整代码。感谢您的帮助!

import UIKit
import AVFoundation
import AudioToolbox


class ViewController: UIViewController, AVAudioPlayerDelegate {

    var audioPlayerHyeeeehLong: AVAudioPlayer = AVAudioPlayer()
    var audioPlayerHyeeeehShort: AVAudioPlayer = AVAudioPlayer()
    var beWellAudioPlayer: AVAudioPlayer = AVAudioPlayer()

    @IBOutlet weak var beWellButton: UIButton!
    @IBOutlet weak var restoreMindBodyButton: UIButton!
    @IBOutlet weak var spiritualCleanseButton: UIButton!

    var randomIndex = 0
    var soundFiles = ["sound1", "sound2", "sound3", "sound4", "sound5"]

    override func viewDidLoad() {
        super.viewDidLoad()

        // play full spiritual cleanse
        let hyeeeeh = Bundle.main.path(forResource: "hyeeeeh", ofType: "m4a")
        do{
            audioPlayerHyeeeehLong = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: hyeeeeh!))
        }catch{
            print(error)
        }

        // play restore mind body
        let hyeeeehShort = Bundle.main.path(forResource: "hyeeeeh1", ofType: "m4a")
        do{
            audioPlayerHyeeeehShort = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: hyeeeehShort!))
        }catch{
            print(error)
        }

        // play be well
        randomIndex = Int(arc4random_uniform(UInt32(soundFiles.count)))
        let selectedFileName = soundFiles[randomIndex]
        let beWell = Bundle.main.path(forResource: selectedFileName, ofType: "m4a")
            do{
                beWellAudioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: beWell!))
            }catch{
                print(error)
            }

       }


    @IBAction func beWell(_ sender: Any) {
        print("Be Well Button Pressed")
        beWellAudioPlayer.play()


    }

    @IBAction func playShortHyeeh(_ sender: Any) {
        audioPlayerHyeeeehShort.play()
    }

    @IBAction func playFullHyeeeh(_ sender: Any) {
        audioPlayerHyeeeehLong.play()
    }
}

编辑: 下面是固定代码。一切正常!感谢您的帮助,R.B Niranjan!

import UIKit
import AVFoundation
import AudioToolbox


class ViewController: UIViewController, AVAudioPlayerDelegate {

    var audioPlayerHyeeeehLong: AVAudioPlayer = AVAudioPlayer()
    var audioPlayerHyeeeehShort: AVAudioPlayer = AVAudioPlayer()
    var beWellAudioPlayer: AVAudioPlayer = AVAudioPlayer()

    @IBOutlet weak var beWellButton: UIButton!
    @IBOutlet weak var restoreMindBodyButton: UIButton!
    @IBOutlet weak var spiritualCleanseButton: UIButton!

    var randomIndex = 0
    var soundFiles = ["sound1", "sound2", "sound3", "sound4", "sound5"]


    override func viewDidLoad() {
        super.viewDidLoad()

       }


    @IBAction func beWell(_ sender: Any) {
        randomIndex = Int(arc4random_uniform(UInt32(soundFiles.count)))
        let selectedFileName = soundFiles[randomIndex]
        let beWell = Bundle.main.path(forResource: selectedFileName, ofType: "m4a")
            do{
                beWellAudioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: beWell!))
            }catch{
                print(error)
            }
        if beWellAudioPlayer.isPlaying{
            beWellAudioPlayer.pause()
        }
        beWellAudioPlayer.currentTime = 0
        beWellAudioPlayer.play()

    }

    @IBAction func playShortHyeeh(_ sender: Any) {
        let hyeeeehShort = Bundle.main.path(forResource: "hyeeeeh1", ofType: "m4a")
        do{
            audioPlayerHyeeeehShort = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: hyeeeehShort!))
        }catch{
            print(error)
        }
        if audioPlayerHyeeeehShort.isPlaying{
            audioPlayerHyeeeehShort.pause()
        }
        audioPlayerHyeeeehShort.currentTime = 0
        audioPlayerHyeeeehShort.play()
    }

    @IBAction func playFullHyeeeh(_ sender: Any) {

        let hyeeeeh = Bundle.main.path(forResource: "hyeeeeh", ofType: "m4a")
               do{
                   audioPlayerHyeeeehLong = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: hyeeeeh!))
               }catch{
                   print(error)
               }
        if audioPlayerHyeeeehLong.isPlaying{
            audioPlayerHyeeeehLong.pause()
        }
        audioPlayerHyeeeehLong.currentTime = 0
        audioPlayerHyeeeehLong.play()
    }
}

选择一个随机的音频文件并播放应该在点击按钮时完成。

@IBAction func beWell(_ sender: Any) {
        print("Be Well Button Pressed")
        randomIndex = Int(arc4random_uniform(UInt32(soundFiles.count)))
        let selectedFileName = soundFiles[randomIndex]
        let beWell = Bundle.main.path(forResource: selectedFileName, ofType: "m4a")
            do{
                beWellAudioPlayer = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: beWell!))
            }catch{
                print(error)
            }
        beWellAudioPlayer.play()
}