按ID排序ipod播放列表



我试图从iPod中获取所有用户的播放列表,并按播放列表的ID对它们进行排序。
以下是我目前所做的:

MPMediaQuery *allPlaylistsQuery = [MPMediaQuery playlistsQuery];
NSArray *allPlaylists = [allPlaylistsQuery collections];
NSArray *sortedPlaylists = [allPlaylists sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:MPMediaPlaylistPropertyPersistentID ascending:YES]]];  

但是我得到exception:

'[<MPConcreteMediaPlaylist 0x14f38590> valueForUndefinedKey:]: this class is not key value coding-compliant for the key playlistPersistentID.'  

那么最简单(也是最有效)的排序是什么呢?

异常的原因是MPMediaItem使用valueForProperty:方法来查询属性值,而不是使用valueForKey:方法,这将使其符合kvc。为什么它不支持valueForKey:对我来说有点神秘,因为它会使类更有用,例如你在你的问题中提供的代码我认为会起作用。

未经测试:

MPMediaQuery *allPlaylistsQuery = [MPMediaQuery playlistsQuery];
NSArray *allPlaylists = [allPlaylistsQuery collections];
NSArray *sorted = [allPlaylists sortedArrayUsingComparator:^(id obj1, id obj2) {
    NSNumber *id1 = [(MPMediaItem *)obj1 valueForProperty:MPMediaItemPropertyPersistentID];
    NSNumber *id2 = [(MPMediaItem *)obj2 valueForProperty:MPMediaItemPropertyPersistentID];
    return [id1 compare:id2];
}];

最新更新