I'm trying to convert my Swift 3 code to Swift 4. I get this error message:
Expression pattern of type 'String' cannot match values of type 'AVMetadataKey'
private extension JukeboxItem.Meta {
mutating func process(metaItem item: AVMetadataItem) {
switch item.commonKey
{
case "title"? :
title = item.value as? String
case "albumName"? :
album = item.value as? String
case "artist"? :
artist = item.value as? String
case "artwork"? :
processArtwork(fromMetadataItem : item)
default :
break
}
}
Please ⌘-click on commonKey and you will see that the argument is of type AVMetadataKey rather than String.
You are encouraged to read the documentation. It's worth it and you can fix yourself an issue like this in seconds.
I added a guard statement to exit the method immediately if commonKey is nil.
private extension JukeboxItem.Meta {
func process(metaItem item: AVMetadataItem) {
guard let commonKey = item.commonKey else { return }
switch commonKey
{
case .commonKeyTitle :
title = item.value as? String
case .commonKeyAlbumName :
album = item.value as? String
case .commonKeyArtist :
artist = item.value as? String
case .commonKeyArtwork :
processArtwork(fromMetadataItem : item)
default :
break
}
}
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With