我试图将我的Swift 3代码转换为Swift 4.我收到此错误消息:
类型' String'的表达模式无法匹配' 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
}
}
答案 0 :(得分:9)
请在commonKey
上⌘-点击,您会看到参数的类型为AVMetadataKey
,而不是String
。
建议您阅读文档。这是值得的,你可以在几秒钟内解决这个问题。
如果guard
为commonKey
,我添加了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
}
}
}