类型' String'的表达模式无法匹配' AVMetadataKey'

时间:2017-09-07 11:39:27

标签: swift4

我试图将我的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
    }
}

1 个答案:

答案 0 :(得分:9)

请在commonKey⌘-点击,您会看到参数的类型为AVMetadataKey,而不是String

建议您阅读文档。这是值得的,你可以在几秒钟内解决这个问题。

如果guardcommonKey,我添加了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
        }
    }
}