0

次のように MPMediaItem からメタデータを取得しています。

let url = item.value(forProperty:MPMediaItemPropertyAssetURL) as? NSURL
let asset = AVURLAsset(url: url! as URL, options: nil)
let metaArray = asset.metadata
for metadata in metaArray{
    print("-----metadata:\(metadata)")
    print("-----metadata.key:\(String(describing: metadata.key))")
}

ただし、印刷されたメタデータのブロックを取得すると、印刷出力に示すように、「キー」が「pcst」ではなく数値として印刷されます。

-----metadata:<AVMetadataItem: 0x1740153f0, identifier=itsk/pcst, keySpace=itsk, key class = __NSCFNumber, key=pcst, commonKey=(null), extendedLanguageTag=(null), dataType=com.apple.metadata.datatype.int8, time={INVALID}, duration={INVALID}, startDate=(null), extras={ dataLength = 1; dataType = 21; dataTypeNamespace = "com.apple.itunes"; }, value=1> -----metadata.key:Optional(1885565812)

これは、すべてのメタデータ/キーで発生しています (この特定のメディア アイテムには 29 個あります)。

また、次のコード行にも注意してください。

let realString = NSString(string: metadata.key! as! String)

このエラーが発生します: Could not cast value of type '__NSCFNumber' (0x1b80dcdf0) to 'NSString' (0x1b80edae8).

キー ("pcst") の文字列値を取得するにはどうすればよいですか?

4

2 に答える 2