2017-09-07 1 views
2

Ich versuche, meine Swift 3-Code Swift 4. Ich erhalte diese Fehlermeldung zu konvertieren:Expressionsmuster vom Typ ‚String‘ nicht Werte vom Typ entsprechen kann ‚AVMetadataKey‘

Expressionsmuster vom Typ ‚String‘ kann nicht Übereinstimmungswerte vom Typ ‚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 
    } 
} 

Antwort

3

Bitte ⌘-klicken auf commonKey und Sie werden sehen, dass das Argument vom Typ AVMetadataKey statt String.

Sie werden aufgefordert, die Dokumentation zu lesen. Es ist es wert, und Sie können sich in Sekunden ein Problem wie dieses beheben.

Ich habe eine guard Anweisung hinzugefügt, um die Methode sofort zu beenden, wenn commonKeynil ist.

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 
     } 
    } 
} 
+0

danke @vadian, es hat funktioniert. –

Verwandte Themen