Swift 5.1エラー:[プラグイン] AddInstanceForFactory:ID <CFUUIDに登録されているファクトリはありません


15

アプリが次のエラーメッセージでクラッシュする

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に関する別のstackoverflowスレッドで解決策を見つけました、ここにそれがあります:

AVAudioPlayer好きなものを初期化した場合

var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()またはwrongMusicPlayer = AVAudioPlayer()、任意の方法で削除して、「var wrongMusicPlayer: AVAudioPlayer!」のように宣言してください。


1
理由はわかりませんが、うまくいきました。ありがとう。
RafaelaLourenço19年

9
残念ながら解決策ではありません。
Phil

参照するスレッドへのリンクを追加してください。THX。
HenryRootTwo

1
誰かがこれに対する解決策をまだ見つけましたか?同じ問題があり、この受け入れられた答えは私には
うまくいき

私にも使用できません
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を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のチュートリアルに従っていましたが、その議論も上記の変化につながりました。さらに例が必要な場合は、次のチュートリアルもチェックしてください

これがあなたの誰かに役立つことを願っています!

乾杯!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.