Error de Swift 5.1: [complemento] AddInstanceForFactory: ninguna fábrica registrada para id <CFUUID


15

La aplicación se bloquea con el siguiente mensaje de error

2019-10-12 20:01:34.332334-0700 Awesome App[26368:3535170] [plugin] AddInstanceForFactory: No factory registered for id <CFUUID 0x600002903280> F8BB1C28-BAE8-11D6-9C31-00039315CD46

El punto de interrupción en el accidente parece estar relacionado con AVAudioPlayer

let path = Bundle.main.path(forResource: "menu_background.mp3", ofType:nil)!
audioPlayer = try AwesomeAudioPlayer(contentsOf: URL(fileURLWithPath: path)) ---> breakpoint

Respuestas:


1

He encontrado la solución en otro hilo de stackoverflow sobre AVAudioPlayer, aquí está:

Si inicializas tu me AVAudioPlayergusta

var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()O wrongMusicPlayer = AVAudioPlayer()en cualquier método, elimínelo y simplemente declare como var wrongMusicPlayer: AVAudioPlayer.


1
No sé por qué ... pero funcionó ... Gracias.
Rafaela Lourenço

99
NO la solución, desafortunadamente.
Phil

Agregue un enlace a los hilos mencionados. Gracias.
HenryRootDos

1
¿Alguien ha encontrado una solución a esto todavía? tener el mismo problema y esta respuesta aceptada no funciona para mí
alionthego

No funciona para mí también
maddy110989

0

Creo que el mensaje de error es una advertencia para los simuladores, por lo tanto, no es importante.

Creo que tu problema es un error en tu código. Debería ser algo como esto:

let path = Bundle.main.path(forResource: "menu_background", ofType:"mp3") audioPlayer = try AwesomeAudioPlayer(contentsOf: URL(fileURLWithPath: path!)) ---> breakpoint

Donde forResource es el nombre del archivo y ofType es la extensión. También puede usar Bundle.main.url que se verá así:

let path = Bundle.main.url(forResource: "menu_background", withExtension:"mp3") audioPlayer = try AwesomeAudioPlayer(contentsOf: URL(fileURLWithPath: path!)) ---> breakpoint


0

Puede usar do / catch para evitar el bloqueo y examinar la excepción, o ignorar el problema junto con try?. Para mí, esto solo aparecía en el simulador cuando llamaba:

try? AVAudioSession.sharedInstance().setCategory(.playback)

Creo que es seguro ignorarlo en mi caso.


0

Creo que todos ustedes podrían haber agregado la Fundación AV a la lista de marcos en la pestaña Información general del proyecto.

El código erróneo fue el siguiente:

import SwiftUI
import AVFoundation

struct PlayerDetailView: View {
@State private var downloadedFilePath: URL = nil
var audioPlayer: AVAudioPlayer

var body: some View {

Y después de que moví la var audioPlayer: AVAudioPlayerdeclaración justo después de la línea de import AVFoundationlínea, parecía estar funcionando.

Entonces, el siguiente código funcionó para mí en un SwiftUIproyecto.

import SwiftUI
import AVFoundation
var audioPlayer: AVAudioPlayer!

struct PlayerDetailView: View {
@State private var downloadedFilePath: URL = nil

var body: some View {
    VStack {
        Button("Play the Downloaded Track") {
            if let downloadedPath = self.downloadedFilePath?.path, FileManager().fileExists(atPath: downloadedPath) {
                do {
                    audioPlayer = try AVAudioPlayer(contentsOf: self.downloadedFilePath!)
                    guard let player = audioPlayer else { return }

                    player.prepareToPlay()
                    player.play()
                } catch let error {
                    print(error.localizedDescription)
                }
            } else {
                print("The file doesn not exist at path || may not have been downloaded yet")
            }
        }
    }
}

}

Inicialmente estaba siguiendo este tutorial de CodeWithChris y su discusión también condujo al cambio anterior. También consulte el siguiente tutorial si necesita más ejemplos.

¡Espero que esto sea útil para alguien de ustedes!

¡Salud!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.