У меня проблема с использованием .isplaying в swiftui. Каждый раз у меня возникает ошибка с кнопкой, которую я создал для управления функцией паузы / воспроизведения. По сути, кнопка должна воспроизводить песню, если ничего не воспроизводится, и останавливать то, что воспроизводится, если что-то воспроизводилось ранее. Я не уверен, из-за чего может возникнуть эта ошибка, и, если нужно разместить больше кода, я могу сделать это без проблем.
Вот код и ошибка.
Button(action: {
let sound = Bundle.main.path(forResource: "vcem983", ofType: "mp3")
if self.audioPlayer!.isPlaying == true {
self.audioPlayer!.pause()
self.audioPlayer! = try! AVAudioPlayer(contentsOf: URL(fileURLWithPath: sound!))
self.audioPlayer!.prepareToPlay()
self.audioPlayer!.play()
} else {
self.audioPlayer!.play()
}
// Continuously fetching current audio time
// Used background to avoid affecting main thread
DispatchQueue.global(qos: .background).async {
while true {
let screenWidth = UIScreen.main.bounds.width - 20
let currenttime = self.audioPlayer!.currentTime / self.audioPlayer!.duration
let timeForLabel = CGFloat(currenttime) * screenWidth
self.time = timeForLabel
print(currenttime)
}
}
}) {
Image(systemName: "waveform")
.font(.caption)
Text("EMOTION 98.3")
.font(.caption)
.fontWeight(.semibold)
.multilineTextAlignment(.center)
}
.frame(minWidth: 0, maxWidth: 300)
.padding()
.background(Color(.secondarySystemBackground))
.cornerRadius(35)
![Code + error](https://i.stack.imgur.com/fE2vs.png)