Codificación de AVMetadataItem

Tengo un AVMetadataItem que tiene campos codificados en CP1251 (cirílico). Después de leer item.stringValue obtengo basura: cadena incorrectamente codificada. He intentado convertir esa cadena a UTF8 en bruto y luego crear una nueva cadena utilizando la encoding CP1251, sin suerte, el resultado es nulo. Intenté tomar el item.dataValue – sin dados, contiene una list de datos sin procesar (comenzando con bplist …).

Cualquier idea es muy apreciada.

Gracias por adelantado.

Solución Swift 2.0:

let origTitleMeta: NSData = (<AVMetadataItem>.timedMetadata?.first?.stringValue?.dataUsingEncoding(NSISOLatin1StringEncoding, allowLossyConversion: true))! let convertedTitleMeta: String = String(data: origMeta, encoding: NSUTF8StringEncoding)! 

Terminé usando NSPropertyListReader_binary1 de Mike Ash y obtuve los datos brutos y luego lo destrozé para que NSString lo codificara.

Horrible, pero funcionó

Tengo la extensión AVMetadataItem para esto:

 extension AVMetadataItem { /// stringValue: ISO-8859-1 → UTF-8 var utf8String: String? { guard let data = stringValue?.data(using: String.Encoding.isoLatin1, allowLossyConversion: true) else { return nil } return String(data: data as Data, encoding: String.Encoding.utf8) } } 

Solución Swift 3.0:

 let data: Data = item.timedMetadata!.first!.stringValue.data(using: String.Encoding.isoLatin1, allowLossyConversion: true)! let title: String = String(data: data as Data, encoding: String.Encoding.utf8)!