2009-11-17 12 views
6

Ich habe meine Anwendung eine MPMediaPickerController angezeigt. Ich möchte die MediaItem speichern und starten Sie es beim Start erneut spielen. Ich denke, das ist machbar mit der MPMediaQuery. Es scheint, ich sollte die MPMediaItemPropertyPersistentID verwenden, aber ich bin mir nicht sicher, wie man danach fragt. Irgendwelche Gedanken?iPhone sdk, MPMediaItemCollection speichern?

Antwort

11

Mann, Sie nicht mediaCollection sparen müssen. Mediensammlung ist nur ein Array von MPMediaItem-Objekten. Sie sollten also persistentIDs dieser Elemente speichern. es ist ganz einfach

//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 ja du hast es getötet !!! –

+0

ist dies notwendig, um ein einzelnes MPMediaItem in MPMediaItemCollection einzufügen? – surfrider

6

sollte diese Arbeit:

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

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