Помилка Swift 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

Я знайшов рішення в іншій потоці stackoverflow про AVAudioPlayer, ось воно:

Якщо ви ініціалізуєте своє AVAudioPlayerподібне

var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()АБО wrongMusicPlayer = AVAudioPlayer()будь-яким методом, то будь ласка, видаліть його та просто оголосити як var wrongMusicPlayer: AVAudioPlayer!


1
Я не знаю чому .. але це спрацювало .. Дякую.
Рафаела

9
НЕ рішення, на жаль.
Філ

Будь ласка, додайте посилання на посилання, на які посилаєтесь. Дякую.
HenryRootTwo

1
хтось ще знайшов рішення для цього? З тією ж проблемою, і ця прийнята відповідь не працює для мене
alionthego

Не працює і для мене
maddy110989

0

Я вважаю, що повідомлення про помилку є попередженням для тренажерів, тому це не важливо.

Я думаю, що ваша проблема - помилка у вашому коді. Повинно бути щось подібне:

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

Де forResource - це ім'я файлу, а ofType - розширення. Ви також можете використовувати Bundle.main.url, який буде виглядати приблизно так:

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


0

Ви можете використовувати do / catch, щоб уникнути аварії та вивчити виняток або проігнорувати проблему разом із усіма try?. Для мене це було показано лише в тренажері під час виклику:

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

Я думаю, що в моєму випадку це безпечно ігнорувати.


0

Я вважаю, що ви всі могли додати AVFoundation до списку фреймворків на вкладці Загальна інформація про проект.

Помилковий код був таким:

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 та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.