स्विफ्ट 5.1 त्रुटि: [प्लगइन] AddInstanceForFactory: आईडी के लिए पंजीकृत कोई कारखाना <CFUUID


14

एप्लिकेशन निम्न त्रुटि संदेश के साथ क्रैश हो जाता है

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

क्रैश पर ब्रेकप्वाइंट AVAudioPlayer से संबंधित लगता है

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

जवाबों:


1

मैंने AVAudioPlayer के बारे में एक और स्टैकओवरफ़्लो थ्रेड में समाधान पाया है, यह है:

अगर आप अपनी AVAudioPlayerपसंद को इनिशियलाइज़ करते हैं

var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()या wrongMusicPlayer = AVAudioPlayer()फिर किसी भी विधि में इसे हटा दें और जैसे घोषणा करें var wrongMusicPlayer: AVAudioPlayer!


1
मुझे पता नहीं क्यों .. लेकिन यह काम किया .. धन्यवाद।
राफाएला लौरेंको

9
दुर्भाग्य से, समाधान नहीं।
फिल

कृपया संदर्भित थ्रेड्स के लिए एक लिंक जोड़ें। धन्यवाद।
हेनरीरूटवू

1
किसी को भी अभी तक इस का हल मिल गया है? एक ही समस्या है और यह स्वीकार किए जाते हैं जवाब मेरे लिए काम नहीं करता है
alionthego

मेरे लिए भी काम नहीं करता है
maddy110989

0

मेरा मानना ​​है कि त्रुटि संदेश सिमुलेटर के लिए एक चेतावनी है इसलिए यह महत्वपूर्ण नहीं है।

मुझे लगता है कि आपका मुद्दा आपके कोड में एक बग है। कुछ इस तरह होना चाहिए:

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

जहाँ forResource फ़ाइल का नाम है और theType एक्सटेंशन है। आप बंडल.main.url का भी उपयोग कर सकते हैं जो इस तरह दिखेगा:

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


0

आप क्रैश से बचने और अपवाद की जांच करने, या सभी के साथ समस्या को अनदेखा करने के लिए डू / कैच का उपयोग कर सकते हैं try?। मेरे लिए, यह केवल सिम्युलेटर में दिखा रहा था जब कॉलिंग:

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

मुझे लगता है कि मेरे मामले में इसे अनदेखा करना सुरक्षित है।


0

मेरा मानना ​​है कि आप सभी ने AVFoundation को Project General Info टैब में फ्रेमवर्क सूची में जोड़ा होगा।

निम्न कोड निम्नानुसार था:

import SwiftUI
import AVFoundation

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

var body: some View {

और जब मैंने var audioPlayer: AVAudioPlayerघोषणा की, तो लाइन के बाद import AVFoundationयह काम करने लगा।

तो निम्नलिखित कोड ने मेरे लिए एक SwiftUIपरियोजना में काम किया ।

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

}

मैं शुरू में CodeWithChris के इस ट्यूटोरियल का अनुसरण कर रहा था और इसकी चर्चा से भी उपरोक्त परिवर्तन हुआ। इसके अलावा चेकआउट ट्यूटोरियल निम्नलिखित भी अगर आप आगे उदाहरण की जरूरत है।

आशा है कि यह आप में से किसी के लिए उपयोगी होगा!

चीयर्स!

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.