我正在尝试播放从存储的持久标识符引用的歌曲,但如果我使用存储的值对其应用过滤器,MPMediaQuery 将返回 0 结果。
我的无效过滤版本代码:
NSNumber *persistentId = [NSNumber numberWithLongLong:15991677378153886747];
MPMediaPredicate *filter = [MPMediaPropertyPredicate predicateWithValue:persistentId forProperty:MPMediaItemPropertyPersistentID];
MPMediaQuery *songQuery = [[MPMediaQuery alloc] initWithFilterPredicates:[NSSet setWithObject:filter]];
NSArray *songs = [songQuery items]; // [songs count] is zero here
尽管songs
包含应该通过此过滤器的 MPMediaItem,但我却得到零个项目返回。检查一下(做得不好):
MPMediaQuery *songQuery = [[MPMediaQuery alloc] init];
NSArray *songs = [songQuery items];
// gives <MPConcreteMediaItem: 0x1dd4d3c0> 15991677378153886747
NSLog(@"%@", [songs objectAtIndex:5]);
// gives 15991677378153886747
NSLog(@"%@", persistentId);
我究竟做错了什么?我已经阅读了文档/示例项目,看起来就是这样做的。