iTunes 目录媒体项目以未知格式返回

Posted

技术标签:

【中文标题】iTunes 目录媒体项目以未知格式返回【英文标题】:iTunes directory media item returned in unknown format 【发布时间】:2015-12-22 16:12:06 【问题描述】:

我编写了以下函数,它读取我的 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

输出如下所示

【问题讨论】:

有什么问题?你请求了一个 MPMediaItems 数组,而这正是你得到的。 你说得对。我改正了 我遇到的问题是输出是十六进制格式或 0x1355e4d90 的任何格式 不,不是。它是 MPMediaItems。这正是你想要的。别担心,开心就好。 如何将它们转换为有意义的输出 Matt?我希望它们转换为可读的文本。当我得到像您这样的专家的帮助时,我一点也不担心。 【参考方案1】:

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

您已获得媒体项目(在本例中为歌曲)。现在,不要说print(result),而是询问他们的头衔:

for song in result 
    print(song.title)

或者,创建一个新数组:

let titles = result.map $0.title

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

【讨论】:

并查看我的书及其示例代码以获取大量示例和讨论:github.com/mattneub/Programming-ios-Book-Examples/blob/master/… 谢谢!!我现在明白了。这很有意义.. 感谢您的帮助,马特!

以上是关于iTunes 目录媒体项目以未知格式返回的主要内容,如果未能解决你的问题,请参考以下文章

【求高手】win7系统,登陆苹果itunes提示发生未知错误

使用iTunes恢复iPhone固件发生未知错误3194 host修改了没用

当 iTunes 从网络链接启动时,Phonegap 媒体对象停止播放

在 Swift 3.0 中访问从 iTunes API 解析的 JSON 对象

iTunes怎么下载

版本号不符合 iTunes Connect 格式化程序中三个以句点分隔的整数