Swift 5.1 Fehler: [Plugin] AddInstanceForFactory: Keine Fabrik für ID <CFUUID registriert


15

App stürzt mit der folgenden Fehlermeldung ab

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

Der Haltepunkt beim Absturz scheint mit AVAudioPlayer zu zusammenhängen

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

Antworten:


1

Ich habe die Lösung in einem anderen Stackoverflow-Thread über AVAudioPlayer gefunden. Hier ist sie:

Wenn Sie Ihr AVAudioPlayerLike initialisieren

var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()ODER wrongMusicPlayer = AVAudioPlayer()in irgendeiner Methode dann bitte entfernen und einfach deklarieren wie var wrongMusicPlayer: AVAudioPlayer!


1
Ich weiß nicht warum ... aber es hat funktioniert ... Danke.
Rafaela Lourenço

9
Leider NICHT die Lösung.
Phil

Bitte fügen Sie einen Link zu den Threads hinzu, auf die verwiesen wird. Danke.
HenryRootTwo

1
Hat jemand schon eine Lösung dafür gefunden? das gleiche Problem zu haben und diese akzeptierte Antwort funktioniert bei mir nicht
alionthego

Funktioniert auch bei mir nicht
maddy110989

0

Ich glaube, die Fehlermeldung ist eine Warnung für Simulatoren, daher ist sie nicht wichtig.

Ich denke, Ihr Problem ist ein Fehler in Ihrem Code. Sollte so etwas sein:

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

Dabei ist forResource der Name der Datei und ofType die Erweiterung. Sie können auch Bundle.main.url verwenden, das folgendermaßen aussieht:

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


0

Sie können do / catch verwenden, um den Absturz zu vermeiden und die Ausnahme zu untersuchen, oder das Problem zusammen mit ignorieren try?. Für mich wurde dies nur im Simulator angezeigt, wenn ich anrief:

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

Ich denke, es ist sicher, es in meinem Fall zu ignorieren.


0

Ich glaube, Sie alle haben die AVFoundation möglicherweise zur Framework-Liste auf der Registerkarte "Allgemeine Projektinformationen" hinzugefügt.

Fehlerhafter Code war wie folgt:

import SwiftUI
import AVFoundation

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

var body: some View {

Und nachdem ich die var audioPlayer: AVAudioPlayerErklärung kurz nach der Zeile verschoben hatte import AVFoundation, schien sie zu funktionieren.

Der folgende Code hat also in einem SwiftUIProjekt für mich funktioniert .

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")
            }
        }
    }
}

}}

Ich habe dieses Tutorial von CodeWithChris anfangs verfolgt und seine Diskussion führte auch zu den oben genannten Änderungen. Schauen Sie sich auch das folgende Tutorial an wenn Sie weitere Beispiele benötigen.

Hoffe, das wird jemandem von euch da draußen helfen!

Prost!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.