मैं एक ऐप बना रहा हूं जिसमें उपयोगकर्ता सेटिंग टैब में एक गाना चुन सकता है और इसे मांग पर एक अलग दृश्य में खेला गया है। मुझे यह चाहिए कि यदि उपयोगकर्ता ऐप बंद करना है और इसे फिर से खोलना है तो यह आइटम संग्रहीत किया जा सकता है।MPMediaItemCollection ऑब्जेक्ट्स को बनाए रखने का तरीका? (आइपॉड से चुना गया)
मैं उपयोगकर्ता के साथ में चुन सकते हैं और एक गाना स्टोर करने के लिए अनुमति देने के लिए कामयाब रहे:
-(IBAction)showMediaPicker:(id)sender{
MPMediaPickerController *mediaPicker = [[MPMediaPickerController alloc] initWithMediaTypes: MPMediaTypeAny];
mediaPicker.delegate = self;
mediaPicker.allowsPickingMultipleItems = NO;
mediaPicker.prompt = @"Select Alarm Sound";
[self presentModalViewController:mediaPicker animated:YES];
}
- (void) mediaPicker: (MPMediaPickerController *) mediaPicker didPickMediaItems: (MPMediaItemCollection *) mediaItemCollection {
[self dismissModalViewControllerAnimated: YES];
settingsData.selectedSong = mediaItemCollection;//Object of type MPMediaItemCollection
लेकिन मैं उपयोगकर्ता इस हर बार जब वे एप्लिकेशन का उपयोग करने के लिए करना चाहते हैं।
मैं कोशिश की है का उपयोग कर NSUserDefaults:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:settingsData.selectedSong forKey:@"alarmSoundKey"];
[defaults synchronize];
लेकिन त्रुटि मिलती है:
* - [NSUserDefaults setObject: forKey:]: गैर संपत्ति के मूल्य '' वर्ग की 'डालने के लिए प्रयास MPMediaItemCollection '। ध्यान दें कि संपत्ति सूचियों में शब्दकोश और सरणी में केवल संपत्ति मान होना चाहिए।
कृपया मेरे विकल्प क्या हैं? वास्तव में सुनिश्चित नहीं हैं कि यह एक से निपटने के लिए कैसे ...
समाधान -
मैं अभी तक अपने ही सवाल का जवाब नहीं कर सकते हैं तो मैं इसे यहाँ डाल देता हूँ:
मैं पाया है मेरी खुद समाधान इस:
पहले परिवर्तित/एक NSData वस्तु और स्लैम दुकान में MPMediaItemCollection सांकेतिक शब्दों में बदलना इसे प्रयोग NSUserDefaults का उपयोग कर:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:mediaItemCollection];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:data forKey:@"someKey"];
[defaults synchronize];
वहाँ से, आप को डिकोड कर सकते हैं एक और अपने ऐप में कहीं और उपयोग करें ....
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"someKey"];
MPMediaItemCollection *mediaItemCollection = [NSKeyedUnarchiver unarchiveObjectWithData:data]
आशा है कि किसी के लिए कुछ मदद है। शब्द फैलाओ, यह पर्याप्त कवर नहीं किया गया है। सचमुच लगभग 4 घंटे के लिए इस समस्या पर काम कर रहे हैं ...
आह धन्यवाद, समझ गया। –