2011-09-14 7 views
5

Mam na myśli Previous Post do przechowywania NSURL biblioteki iPoda w NSUserDefault. Ale nie jest przechowywany w NSUserDefault po zamknięciu aplikacji.NSUrl nie jest przechowywany jako absolutestring w NSUserDefault

Używam innych NSStrings do przechowywania w NSUserDefaults, co jest doskonale zrobione, Ale kiedy przechowuję NSUrl jako ciąg bezwzględny .. nie przechowuje wartości.

Jaki może być powód?

EDIT

następujący kod używam zapisać NSUserDefault wartość:

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); 

Po błędzie pojawia się, gdy próbuję zapisać bibliotece 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

mogliśmy zobaczyć kilka linijek kodu, w którym można przechowywać url? Ponadto, gdy mówisz, że nie przechowuje wartości, zakładam, że zapisany ciąg znaków jest po prostu zerowy? Jakieś ostrzeżenia na twoim kodzie? – Madhu

+0

Dodałem kod ... – DShah

Odpowiedz

20

Jeśli chcesz przechowywać NSURL, to dlaczego przekształcasz go w ciąg znaków i zapisujesz jako ciąg. To zwiększy twój wysiłek pracy.

Można spróbować to:

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

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

Mam nadzieję, że to rozwiązanie rozwiąże Twój problem. – Gypsa

+0

Dlaczego warto korzystać z [defaults synchronize] ?? – DShah

+0

W rzeczywistości metody te automatycznie wywołują w okresowych odstępach czasu i aktualizują dane automatycznie, ale w międzyczasie, jeśli nie zostały zaktualizowane, a jeśli z niego skorzystasz, otrzymasz stare wyniki, nie zmodyfikowane, więc zostaną ręcznie wywołane, dzięki czemu możesz natychmiast zapisać swoje dane . – Gypsa

1

Jedyną rzeczą, Można pomyśleć, że to wyjaśnia, że ​​URL jest co najmniej częściowo losowo generowany, a więc nie można załadować po usunięciu odwołania aplikacji do tego. Co masz na myśli mówiąc "zamknięty"? W tle? Lub naprawdę zakończone?

Możliwe również, że należy zapisać go jako obiekt string:yourURLString forKey:@"URL". Może to dezorientować aplikację. Wypróbuj NSLog, aby wypisać ciąg adresu URL i zobaczyć, co otrzymasz. Daj mi znać, co to jest. To wyjaśni sprawy.

+0

Dodałem kod i błąd. Za każdym razem moja aplikacja zaczyna się od początku. Nie zezwalam na to, aby moja aplikacja znajdowała się w tle, zawsze będzie zaczynać od nowa. – DShah

+0

Czy próbowałeś użyć 'NSLog' do wyprowadzenia adresu URL? –

0

ciąg powinien nieruchomość deklaruje ... spróbuj zapisać go w NSUserDefaults

+0

wszystkie inne UserDefaults działają dobrze ... tylko NSURL nie działa poprawnie ... – DShah

+0

spróbuj utworzyć instancję NSURL i utwórz właściwość i zsyntetyzuj ją, a następnie spróbuj zapisać ... – Maulik

Powiązane problemy