2009-11-17 15 views
6

Tengo mi aplicación mostrando un MPMediaPickerController. Me gustaría guardar el MediaItem y comenzar a reproducirlo nuevamente al inicio. Creo que esto es factible usando el MPMediaQuery. Parece que debería usar el MPMediaItemPropertyPersistentID, pero no estoy seguro de cómo consultarlo. ¿Alguna idea?iPhone sdk, excepto MPMediaItemCollection?

Respuesta

11

hombre, usted no necesita guardar mediaCollection. colección de medios es solo una matriz de objetos MPMediaItem. Así que será mejor que guardes persistentes íds de estos artículos. es bastante fácil

//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]; 
} 
+0

helll yeah you killed it !!! –

+0

¿es esto necesario para envolver un solo MPMediaItem en MPMediaItemCollection? – surfrider

6

Esto debería funcionar:

MPMediaQuery *query = [MPMediaQuery songsQuery]; 
MPMediaPropertyPredicate *predicate = [MPMediaPropertyPredicate predicateWithValue:myPersistentID forProperty:MPMediaItemPropertyPersistentID]; 

[query addFilterPredicate:predicate]; 
NSArray *songs = [query items];