我试图从iPod中获取所有用户的播放列表,然后按播放列表的ID对其进行排序。
这就是我到目前为止所做的:
MPMediaQuery *allPlaylistsQuery = [MPMediaQuery playlistsQuery];
NSArray *allPlaylists = [allPlaylistsQuery collections];
NSArray *sortedPlaylists = [allPlaylists sortedArrayUsingDescriptors:@[[NSSortDescriptor sortDescriptorWithKey:MPMediaPlaylistPropertyPersistentID ascending:YES]]];
但我得到例外:
'[<MPConcreteMediaPlaylist 0x14f38590> valueForUndefinedKey:]: this class is not key value coding-compliant for the key playlistPersistentID.'
那么最简单(又有效)的原因是什么呢?
答案 0 :(得分:0)
异常的原因是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];
}];