2009-11-17 10 views
6

मेरे पास मेरा एप्लिकेशन MPMediaPickerController प्रदर्शित करता है। मैं MediaItem को सहेजना चाहता हूं और इसे स्टार्टअप पर फिर से खेलना शुरू कर दूंगा। मुझे लगता है कि यह MPMediaQuery का उपयोग कर करने योग्य है। ऐसा लगता है, मुझे MPMediaItemPropertyPersistentID का उपयोग करना चाहिए, लेकिन मुझे यकीन नहीं है कि इसके लिए कैसे पूछना है। कोई विचार?आईफोन एसडीके, MPMediaItemCollection को बचाओ?

उत्तर

11

यार, तुम न 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]; 
} 
+0

हेल हाँ आपने इसे मार डाला !!! –

+0

क्या MPMediaItemCollection में एकल MPMediaItem को लपेटना आवश्यक है? – surfrider

6

यह काम करना चाहिए:

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

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