首页 > 解决方案 > DispatchGroup 做、尝试、抓住?

问题描述

我正在使用 AudioKit 框架并希望使用 DispatchGroup 使方法异步工作。我希望 player.load 方法仅在创建 audioFile 后运行;现在它在大约 50% 的时间里抛出错误,我怀疑这是由于时间问题。我在其他情况下成功使用了 DispatchGroup,但从未在 do/try/catch 中使用过。有没有办法让这部分功能与它一起工作?如果没有,有没有办法设置关闭?谢谢!

func createPlayer(fileName: String) -> AKPlayer {
    let player = AKPlayer()
    let audioFile : AKAudioFile
    player.mixer >>> mixer
    do {
        try audioFile = AKAudioFile(readFileName: "\(fileName).mp3")
        player.load(audioFile: audioFile)
        print("AudioFile \(fileName), \(audioFile) loaded")
    } catch { print("No audio file read, looking for \(fileName).mp3")
    }
    player.isLooping = false
    player.fade.inTime = 2 // in seconds
    player.fade.outTime = 2
    player.stopEnvelopeTime = 2
    player.completionHandler = {
        print("Completion")
        self.player.detach()
    }
    player.play()
    return player
}

标签: swiftasynchronousaudiokit

解决方案


推荐阅读