스위프트 5.1 오류 : [plugin] 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

답변:


1

AVAudioPlayer에 대한 또 다른 stackoverflow 스레드에서 해결책을 찾았습니다.

당신이 AVAudioPlayer좋아하는 것을 초기화하면

var wrongMusicPlayer: AVAudioPlayer = AVAudioPlayer()또는 wrongMusicPlayer = AVAudioPlayer()어떤 방법 으로든 제거하고 var wrongMusicPlayer: AVAudioPlayer! 처럼 선언 하십시오.


1
왜 그런지 모르겠지만 효과가있었습니다. 감사합니다.
Rafaela Lourenço

9
불행히도 해결책이 아닙니다.
Phil

언급 된 스레드에 대한 링크를 추가하십시오. 고마워.
HenryRoot2

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 의이 튜토리얼을 따르고 있었고 그 토론도 위의 변화를 가져 왔습니다. 추가 예제가 필요한 경우 자습서를 따라 체크 아웃하십시오 .

이것이 당신의 누군가에게 도움이되기를 바랍니다!

건배!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.