Swift 5.1错误:[插件] AddInstanceForFactory:没有为ID <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

Answers:


1

我在关于AVAudioPlayer的另一个stackoverflow线程中找到了解决方案,这里是:

如果您初始化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的,其讨论也导致了上述变化。还结帐以下教程太多,如果你需要进一步的例子。

希望这会对您中的某人有所帮助!

干杯!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.