2011-09-14 12 views
5

Mi riferisco a Previous Post per l'archiviazione di NSURL della libreria iPod in NSUserDefault. Ma non è memorizzato in NSUserDefault dopo che l'applicazione è stata chiusa.NSUrl non è archiviato come absolutestring in NSUserDefault

Sto utilizzando altri NSStrings per archiviare in NSUserDefaults che è perfettamente eseguito, ma quando memorizzo NSUrl come stringa assoluta .. non memorizza il valore.

Quale potrebbe essere il motivo ??

EDIT

Seguendo codice che sto usando per salvare NSUserDefault Valore:

currentItem = [collection.items objectAtIndex:songCount]; 
songURL = [currentItem valueForProperty:MPMediaItemPropertyAssetURL]; 
[[NSUserDefaults standardUserDefaults] setObject:[currentItem valueForProperty:MPMediaItemPropertyTitle] forKey:@"songTitle"]; 
[[NSUserDefaults standardUserDefaults] setObject:[songURL absoluteString] forKey:@"songURL"]; 
avPlayer = [[AVPlayer alloc] initWithURL:songURL]; 
NSLog(@"songTitle: %@ songURL : %@",[[NSUserDefaults standardUserDefaults]objectForKey:@"songTitle"], songURL); 

seguito errore viene quando provo a salvare il NSURL:

2011-09-13 18:47:23.258 Tabata Timer[933:707] songURL : ipod-library://item/item.mp3?id=-3715406019015217536 
2011-09-13 18:47:23.258 Tabata Timer[933:707] *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value 'ipod-library://item/item.mp3?id=-3715406019015217536' of class 'NSURL'. 
2011-09-13 18:47:23.260 Tabata Timer[933:707] songTitle : Ghajini 
2011-09-13 18:47:24.860 Tabata Timer[933:707] *** -[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value 'ipod-library://item/item.mp3?id=-3715406019015217536' of class 'NSURL'. 
2011-09-13 18:47:24.963 Tabata Timer[933:707] songURL : ipod-library://item/item.mp3?id=-3715406019015217536 
warning: Unable to read symbols for /Developer/Platforms/iPhoneOS.platform/DeviceSupport/4.3.5 (8L1)/Symbols/Developer/usr/lib/libXcodeDebuggerSupport.dylib (file not found). 
+1

Potremmo vedere un paio di righe di codice in cui memorizzare l'url? Inoltre, quando dici che non memorizza il valore, presumo che la particolare stringa memorizzata sia semplicemente nulla? Eventuali avvisi sul tuo codice? – Madhu

+0

ho aggiunto il codice ... – DShah

risposta

20

Se si desidera archiviare NSURL, perché si converte in stringa e si salva come stringa. Aumenterà il tuo sforzo lavorativo.

Si può provare questo:

NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];  
    [defaults setURL:[NSURL URLWithString:@"http://www.google.com"] forKey:@"urlValue"]; 
    [defaults synchronize]; 

    NSURL *url=[defaults URLForKey:@"urlValue"]; 
    NSLog(@"%@",url); 
+0

Spero che questa soluzione risolva il tuo problema. – Gypsa

+0

Perché usare [default sincronizza] ?? – DShah

+0

In realtà questo metodo chiama automaticamente a intervalli periodici e aggiorna i dati automaticamente, ma nel frattempo se non viene aggiornato e se lo si utilizza si otterranno i vecchi risultati non modificati così viene chiamato manualmente in modo da poter salvare immediatamente i propri dati . – Gypsa

1

L'unica cosa che Possiamo pensare che ciò spiegherebbe che l'URL è generato almeno in parte in modo casuale e quindi non riesce a caricare dopo che l'app rimuove il riferimento ad esso. Cosa intendi con "chiuso"? Backgrounded? O davvero terminato?

Potrebbe anche essere che dovresti salvarlo come string:yourURLString forKey:@"URL" invece di un oggetto. Potrebbe confondere l'app. Prova NSLog per stampare la stringa dell'URL e vedere cosa ottieni. Fammi sapere di cosa si tratta. Questo chiarirà le cose.

+0

ho aggiunto il codice e l'errore. Inoltre, ogni volta che la mia app inizia dall'inizio. Non permetto alla mia app di essere in background, inizierà sempre come nuova. – DShah

+0

Hai provato a utilizzare "NSLog' per generare l'URL? –

0

la stringa dovrebbe avere proprietà dichiarata ... quindi provare a riporlo in NSUserDefaults

+0

tutti gli altri UserDefaults funzionano bene ... solo NSURL non funziona correttamente ... – DShah

+0

provare a creare un'istanza di NSURL e creare una proprietà e sintetizzarla e quindi provare a memorizzare ... – Maulik

Problemi correlati