-2

私は、iTunes ディレクトリ内のメディア アイテムのリストを読み取り、音楽ファイルを返す次の関数を作成しました。「曲のタイトル」を返す必要がありますが、実行すると、返されたアイテムの形式が不明です。実際の名前を正しく取得するには、プロパティ フィルターを介してそれらを実行するか、何らかの変換を使用する必要があると確信しています。最後に、内容を文字列の配列に出力したいと思います。添付のスクリーン ショットでは、ループを 4 回だけ実行しています。コンバージョンが見つからないことを教えてもらえますか? 出力は16進形式のようですが、明確ではありません。

      class func readMusicFiles() -> NSMutableArray {
    //var songDecoded:[NSMutableArray]
    let result = NSMutableArray()
    let allSongsQuery:MPMediaQuery = MPMediaQuery.songsQuery();
    let tempArray:NSArray = allSongsQuery.items!;
    for item:AnyObject in tempArray {
        if (item is MPMediaItem) {
            let temp = item as! MPMediaItem;
            if (temp.mediaType != MPMediaType.Music) {
                continue;
            }
            result.addObject(item);
        }
    }
        print(result)
       return result
}

}

出力は次のようになります

ここに画像の説明を入力

4

1 に答える 1

1

「hex」は「フォーマット」ではありません。これは、オブジェクトのメモリ アドレスを示すだけです。それを無視します。

メディア アイテム (この場合は曲) を取得しました。今、言う代わりにprint(result)、彼らの肩書きを聞いてください:

for song in result {
    print(song.title)
}

または、新しい配列を作成するには:

let titles = result.map {$0.title}

(また、関数が NSMutableArray を返すように宣言しないでください。これは Cocoa の問題です。Swift 配列に固執するようにしてください。たとえば、タイトルの配列で終わる場合、それらは文字列なので、 a を返します[String]。)

于 2015-12-22T16:18:21.780 に答える