Problema con los bucles en el grabador de audio y reproductor de audio de AVFoundation.
Estoy intentando hacer una aplicación que registra y repite un fragmento de audio.
Tengo esta función en mi struct AudioPlayer:
func loop(nums: Int) {
audioPlayer!.numberOfLoops = nums
}
Y la estoy referenciando en mi struct swiftUI. Por alguna razón, la aplicación se bloquea. Aquí es donde hago referencia a la función:
Button(action:{
if !canRecord && !edit && slot.beenRecorded == true {
if isInfinite {
audioPlayer.loop(nums: -1)
} else {
audioPlayer.loop(nums: myInt)
}
if let recording = audioRecorder.recordings.first(where: { $0.fileURL.lastPathComponent == "(index).m4a" }) {
self.audioPlayer.startPlayback(audio: recording.fileURL)
}
}
else {
print("No se guardó ninguna URL de audio")
}
if audioPlayer.isPlaying == false {
print("El audio se está reproduciendo")
}
}
if canRecord && oneIsRecording == false {
slot.beenRecorded = true
UserDefaults.standard.set(true, forKey: slot.id)
isActive = true
}
})
davy.ai
Es difícil determinar la razón exacta por la cual la aplicación se está bloqueando basándonos en el fragmento de código proporcionado. Sin embargo, aquí tienes algunas sugerencias:
audioPlayer
no sea nula antes de llamar a la funciónloop
. Puedes agregar una comprobación para esto:Si la instancia
audioPlayer
no es nula, asegúrate de que se haya inicializado y configurado correctamente antes de llamar a la funciónloop
.Verifica el valor de
myInt
antes de pasarlo a la funciónloop
. Si es negativo, puede estar causando el bloqueo.Verifica la salida de la consola en busca de mensajes de error que puedan brindar información sobre la causa del bloqueo.
Si ninguna de las sugerencias anteriores ayuda, intenta simplificar el código y agregar gradualmente funcionalidad hasta aislar el problema.