-2

我编写了以下函数,它读取 iTunes 目录中的媒体项目列表并返回音乐文件。我需要返回“歌曲标题”,但是当我运行它时,返回的项目格式未知。我很确定我需要通过属性过滤器运行它们或使用一些转换来正确获取实际名称。最后,我想以字符串数组的形式输出内容。在附加的屏幕截图中,我只运行了四次循环。谁能指出我缺少的转换?看起来输出是十六进制格式,但不清楚。

      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

“十六进制”不是“格式”;它只是对象的内存地址的指示。忽略它。

你有你的媒体项目(在这种情况下是歌曲)。现在,与其说 ,不如print(result)询问他们的头衔:

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

或者,创建一个新数组:

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

(另外,不要声明你的函数返回一个 NSMutableArray。那是 Cocoa 的事​​情。尽量坚持使用 Swift 数组。例如,如果你最终要得到一个标题数组,那么这些是字符串,所以返回一个[String]。)

于 2015-12-22T16:18:21.780 回答