使用 MPMediaItemPropertyPersistentID 获取对应的 MPMediaItem

Getting The Corresponding MPMediaItem With MPMediaItemPropertyPersistentID

我需要使用我使用 NSUserDefaults 存储的永久 ID 检索相应的 MPMediaItem。我目前的做法是获取所有 MPMediaItems,遍历它们,并找出与我存储的持久 ID 相同的那个。我认为这是一个非常糟糕的表现,那么是否有现有的方法来获取具有我拥有的持久 ID 的 MPMediaItem?我检查了 Apple 的文档,但找不到。

您可以通过查找具有唯一 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];