是否可以在 MPMediaCollection 中唯一标识重复的 MPMediaItem?

Posted

技术标签:

【中文标题】是否可以在 MPMediaCollection 中唯一标识重复的 MPMediaItem?【英文标题】:Is it possible to uniquely identify duplicate MPMediaItems within an MPMediaCollection? 【发布时间】:2011-08-08 15:20:27 【问题描述】:

我正在使用MPMediaItemCollection 来保存一些用户从 iPod 音乐库中选择的音乐曲目。我希望能够唯一标识集合中的每个MPMediaItem,即使它们是重复的。这可能吗?

【问题讨论】:

-isEqual:不够用吗? 没有。如果音乐播放器 nowPlayingItem 在媒体集合中有重复项,如果我使用 NSArrays indexForObject: 方法检查 nowPlayingItems 索引,则始终返回索引值最低的 mediaItem。这意味着如果正在播放的项目是数组中更靠前的副本之一,则它不会返回正确的对象。我认为 indexForObject 正在使用 isEqual: 方法扫描数组,直到它返回 true。 是的,但这始终是它的工作方式。这就是-indexOfObject: 的目的。如果您想查找任何重复项,则不能使用-indexOfObject:,因为它始终会为您提供第一个索引。 是的,这就是为什么我需要一种唯一标识数组中每个 mediaItem 的方法,以便我可以确定正在为音乐播放器 nowPlayingItem 返回正确的索引 这没有意义。如果该项目两次出现在列表中,则两次是同一项目 【参考方案1】:

我遇到了和你一样的问题,Apple 刚刚在 ios v5.0 中为我提供了解决方案。 MPMusicPlayerController 类中有一个 indexOfNowPlayingItem 属性。您可以使用它来索引您的数组。当然,如果您使用的是 MPMusicPlayerController。

【讨论】:

以上是关于是否可以在 MPMediaCollection 中唯一标识重复的 MPMediaItem?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MPMusicplayerController 上播放歌曲 URL?

是否可以检测用户是否在新选项卡中打开了链接?

是否可以知道用户是否在文本字段中输入或删除字符?

是否可以判断一个对象是否在不同的 AppDomain 中运行?

是否可以在接口中实现本机方法?

是否可以在 Cocoa 中确定文件是否是从别名打开的?