Ich versuche, einige Informationen von einem Musiktitel zu erhalten, funktioniert alles gut, aber einige Musik hat keine title
, artist
und cover artwork
, und in diesem Fall habe ich einen Standardwert zum Beispiel zur Verfügung zu stellen Unknown
.Ausgabe mit Informationen aus einem Musiktitel bekommen
Ich Füllung Tabellenansicht mit Informationen Spur wie folgt aus:
//MARK: - Get Data From Track :
func getDataFromTrack(file:URL) {
//Get data from track
urlAsset = AVURLAsset(url: file)
for format in urlAsset.availableMetadataFormats {
for metadata in urlAsset.metadata(forFormat: format) {
//Track Name :
if metadata.commonKey == "title" {
if let title = metadata.stringValue {
appDefaults.setTrack(Name: title)
} else {
appDefaults.setTrack(Name: "Unknown")
}
}
//Track Artist:
if metadata.commonKey == "artist" {
if let artist = metadata.stringValue {
appDefaults.setArtist(Name: artist)
} else {
appDefaults.setArtist(Name: "Unknown")
}
}
//Track Cover:
if metadata.commonKey == "artwork" {
if let data = metadata.dataValue {
let image = UIImage(data: data)
appDefaults.setCover(Image: image!)
} else {
appDefaults.setCover(Image: #imageLiteral(resourceName: "Defualt cover"))
}
}
appDefaults.setTrack(duration: Float(CMTimeGetSeconds(urlAsset.duration)))
}
}
}
In der Tabellenansicht:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
... setup cell
let fileName = player.MP3DirectoryFiles[indexPath.row-2] as! NSString
let absoluteFileName = String(describing: fileName.lastPathComponent)
let removeSpaceString = absoluteFileName.replacingOccurrences(of: "%20", with: " ")
//Get MP3 Infromations
let documentsURL = NSURL(fileURLWithPath: NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true).first!,isDirectory: true)
let urlToMyPath = documentsURL.appendingPathComponent(removeSpaceString)!
player.getDataFromTrack(file: urlToMyPath)
}
Wenn keine Daten von der Spur Zelle füllen ihre Daten zum Beispiel Titel mit anderen Spuren Information !
Ich habe versucht, Nullwert wie diese zu bekommen, aber nicht mir helfen:
if metadata.commonKey == "artist" {
if let artist = metadata.stringValue {
appDefaults.setArtist(Name: artist)
} else {
appDefaults.setArtist(Name: "Unknown")
}
}
Danke, es hat funktioniert! –