我需要使用NSUserDefaults检索存储的持久ID来检索相应的MPMediaItem。我目前的做法是获取所有MPMediaItems,循环遍历它们,并找出与我存储的具有相同持久ID的那个。我认为这是一个非常糟糕的性能,所以有一个现有的方法来获取MPMediaItem与我拥有的持久ID吗?我检查了Apple的文档,但我找不到。
答案 0 :(得分:7)
通过使用唯一ID查询查找MPMediaItem
项目,您可以获得比线性效果更好的效果:
MPMediaQuery* query = [MPMediaQuery songsQuery]; // general songs query
MPMediaPropertyPredicate* pred = [MPMediaPropertyPredicate predicateWithValue:persistentID
forProperty:MPMediaItemPropertyPersistentID];
// narrow the query down to just items with that ID
[query addFilterPredicate:pred];
// now get items (there should be only one):
MPMediaItem *item = [query.items firstObject];