使用 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];
我需要使用我使用 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];