Sto creando un'app in cui l'utente può selezionare un brano in una scheda delle impostazioni e farlo riprodurre su una vista diversa su richiesta. Lo voglio affinché questo elemento possa essere memorizzato se l'utente deve chiudere l'app e riaprirla un'altra volta.Modo per persistere oggetti MPMediaItemCollection? (selezionato da iPod)
Sono riuscito a permettere all'utente di selezionare e memorizzare una canzone con:
-(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
ma voglio che l'utente ha a che fare questo ogni volta che utilizzano l'applicazione.
Ho provato con NSUserDefaults:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:settingsData.selectedSong forKey:@"alarmSoundKey"];
[defaults synchronize];
ma l'errore:
* - [NSUserDefaults setObject: Forkey:]: Tentativo di inserire il valore non di proprietà '' di classe ' MPMediaItemCollection'. Nota che i dizionari e le matrici negli elenchi di proprietà devono contenere anche solo valori di proprietà.
Quali sono le mie opzioni per favore? Non proprio sicuro di come affrontare questo ...
SOLUZIONE -
non posso ancora rispondere alle mie domande quindi mi metto qui:
ho trovato la mia SOLUZIONE ALLA PROPRIA QUESTO:
prima convertire/codificare il MPMediaItemCollection a un oggetto e sbattere negozio NSData utilizzando NSUserDefaults utilizzando:
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:mediaItemCollection];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:data forKey:@"someKey"];
[defaults synchronize];
da lì, si può decodificare un usa altrove nella tua app ...
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"someKey"];
MPMediaItemCollection *mediaItemCollection = [NSKeyedUnarchiver unarchiveObjectWithData:data]
Spero che sia di aiuto a qualcuno. Spargi la voce, questo non è stato coperto abbastanza. Abbiamo letteralmente lavorato a questo problema per circa 4 ore ...
Ah grazie, capito. –