保存されたpersistentIdentifierから参照された曲を再生しようとしていますが、保存された値を使用してフィルタを適用すると、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);
私は何を間違っていますか?ドキュメント/サンプルプロジェクトを読みましたが、これがその方法のようです。