'Swift problem with AVAudioPlayer (AddInstanceForFactory: No factory registered for id <CFUUID)
Im working in swift for like 1 month. Started to make some apps watching some yt tutorials(Ios Academy). I got problem making music player , when i try to play song which i added to app , i get this message: AddInstanceForFactory: No factory registered for id <CFUUID
here is the code: import AVFoundation import UIKit var player: AVAudioPlayer!
class PlayerViewController: UIViewController, UITableViewDelegate {
public var position: Int = 0
public var songs: [Song] = []
@IBOutlet var holder: UIView!
// user interface element
private let albumImageView: UIImageView = {
let imageView = UIImageView()
imageView.contentMode = .scaleAspectFill
return imageView
}()
private let songNameLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0 // line wrap
label.textAlignment = .center
return label
}()
private let artistNameLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0 // line wrap
label.textAlignment = .center
return label
}()
private let albumNameLabel: UILabel = {
let label = UILabel()
label.numberOfLines = 0 // line wrap
label.textAlignment = .center
return label
}()
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
if holder.subviews.count == 0 {
configure()
}
}
func configure() {
// setup player
let song = songs[position]
let urlString = Bundle.main.path(forResource: song.trackName, ofType: "mp3")
do {
try AVAudioSession.sharedInstance().setMode(.default)
try AVAudioSession.sharedInstance().setActive(true, options: .notifyOthersOnDeactivation)
guard let urlString = urlString else {
return
}
player = try AVAudioPlayer(contentsOf: URL(string: urlString)!)
guard let player = player else {
print("player is nil")
return
}
player.play()
}
catch {
print("error occurred")
}
// setup user interface elements
// album cover
albumImageView.frame = CGRect (x: 10,
y: 10,
width: holder.frame.size.width-20,
height: holder.frame.size.width-20)
albumImageView.image = UIImage(named: song.imageName)
holder.addSubview(albumImageView)
// labels Song name , album , artist
songNameLabel.frame = CGRect (x: 10,
y: albumImageView.frame.size.height + 10,
width: holder.frame.size.width-20,
height: 70)
albumNameLabel.frame = CGRect (x: 10,
y: albumImageView.frame.size.height + 10 + 70,
width: holder.frame.size.width-20,
height: 70)
artistNameLabel.frame = CGRect (x: 10,
y: albumImageView.frame.size.height + 10 + 140,
width: holder.frame.size.width-20,
height: 70)
songNameLabel.text = song.name
albumNameLabel.text = song.albumName
artistNameLabel.text = song.artistName
holder.addSubview(songNameLabel)
holder.addSubview(albumNameLabel)
holder.addSubview(artistNameLabel)
// Player controls
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
if let player = player {
player.stop()
}
}
}
i tried to fix watching some other answers about this problem , but i actually got no idea what else to do , but cant give up till i fix this..
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
