У меня есть приложение, отображающее MPMediaPickerController
. Я хотел бы сохранить MediaItem
и запустить его снова при запуске. Я думаю, что это выполнимо, используя MPMediaQuery
. Кажется, я должен использовать MPMediaItemPropertyPersistentID
, но я не уверен, как его запросить. Есть предположения?
iPhone sdk, сохранить MPMediaItemCollection?
Ответы (2)
Чувак, тебе не нужно сохранять mediaCollection. коллекция мультимедиа - это просто массив объектов MPMediaItem. Поэтому вам лучше сохранить постоянные идентификаторы этих элементов. это довольно легко
//it's how to know persistentId of the song after you got mediaItemCollection from your mediaPickerViewController
//then you can sav it in userDefaults.
- (NSNumber *)getPersistentId :(MPMediaItemCollection *)collection atIndex:(int)index {
MPMediaItem *mediaItem = [collection.items objectAtIndex:index];
NSNumber *anId = [mediaItem valueForProperty:MPMediaItemPropertyPersistentID];
return anId;
}
//when your application will be launched next time you can get required song:
- (void)obtainSongWitId:(NSNumber *)persistentId {
MPMediaQuery *query = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:persistentId forProperty:MPMediaItemPropertyPersistentID];
[query addFilterPredicate:predicate];
NSArray *mediaItems = [query items];
//this array will consist of song with given persistentId. add it to collection and play it
MPMediaItemCollection *col = [[MPMediaItemCollection alloc] initWithItems:mediaItems];
///....
[col release];
}
person
Valera
schedule
19.11.2010
это необходимо для переноса одного MPMediaItem в MPMediaItemCollection?
- person surfrider; 17.02.2016
Это должно работать:
MPMediaQuery *query = [MPMediaQuery songsQuery];
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:myPersistentID forProperty:MPMediaItemPropertyPersistentID];
[query addFilterPredicate:predicate];
NSArray *songs = [query items];
person
rickchatham
schedule
19.11.2009