Swift 5.1 Error: [plugin] AddInstanceForFactory: Tidak ada pabrik yang terdaftar untuk id <CFUUID

15

Aplikasi macet dengan pesan kesalahan berikut

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

Breakpoint saat mogok tampaknya terkait dengan AVAudioPlayer

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

Jawaban:

1

Saya telah menemukan solusi di utas stackoverflow lain tentang AVAudioPlayer, ini dia:

Jika Anda menginisialisasi AVAudioPlayersuka Anda

var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()ATAU wrongMusicPlayer = AVAudioPlayer()dengan metode apa pun silakan hapus dan hanya Menyatakan suka var wrongMusicPlayer: AVAudioPlayer!

Francois
sumber
1
Saya tidak tahu mengapa .. tetapi itu berhasil .. Terima kasih.
Rafaela Lourenço
9
BUKAN solusinya, sayangnya.
Phil
Harap tambahkan tautan ke utas yang dimaksud. Terima kasih.
HenryRootTwo
1
Adakah yang sudah menemukan solusi untuk ini? memiliki masalah yang sama dan jawaban yang diterima ini tidak berhasil untuk saya
alionthego
Tidak bekerja untuk saya juga
maddy110989
0

Saya percaya pesan kesalahan adalah peringatan untuk simulator karena itu tidak penting.

Saya pikir masalah Anda adalah bug dalam kode Anda. Seharusnya seperti ini:

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

Di mana forResource adalah nama file dan ofType adalah ekstensi. Anda juga dapat menggunakan Bundle.main.url yang akan terlihat seperti ini:

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

Here2Huynh
sumber
0

Anda bisa menggunakan do / catch untuk menghindari crash dan memeriksa pengecualian, atau mengabaikan semua masalah bersama try?. Bagi saya, ini hanya muncul di simulator saat menelepon:

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

Saya pikir aman untuk mengabaikannya dalam kasus saya.

pulse4life
sumber
0

Saya yakin Anda semua mungkin telah menambahkan AVFoundation ke daftar kerangka kerja di tab Info Umum Proyek.

Kode yang keliru adalah sebagai berikut:

import SwiftUI
import AVFoundation

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

var body: some View {

Dan setelah saya memindahkan var audioPlayer: AVAudioPlayerdeklarasi ke tepat setelah garis import AVFoundationgaris sepertinya berfungsi.

Jadi kode berikut bekerja untuk saya dalam suatu SwiftUIproyek.

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

}

Saya awalnya mengikuti tutorial CodeWithChris ini dan pembahasannya juga menyebabkan perubahan di atas. Periksa juga tutorial berikut juga jika Anda membutuhkan contoh lebih lanjut.

Semoga ini bisa membantu seseorang di luar sana!

Bersulang!

Randika Vishman
sumber