Я пытаюсь воспроизвести песню, на которую ссылается сохраненный идентификатор persistenceIdentifier, но 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);
Что я делаю неправильно? Я прочитал документацию/примеры проектов, и похоже, что это делается именно так.