2011-09-14 15 views
5

yılında absolutestring ben NSUserDefault iPod Kütüphanesi NSURL depolamak için Previous Post bahsediyorum olarak depolanmaz. Ancak, uygulama kapatıldıktan sonra NSUserDefault içinde depolanmaz. NSUrl NSUserDefault

Ben mükemmel yapılır NSUserDefaults saklamak için diğer NSStrings kullanıyorum, Ama mutlak dize olarak NSUrl depolamak zaman .. o değeri değil mağaza yok.

Bunun nedeni ne olabilir ??

DÜZENLEME

i NSUserDefault Değerini kurtarmak için kullanıyorum takiben kodu: i NSURL kaydetmeye çalıştığımda

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

ardından hata geliyor:

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

depolamak deneyin? Ayrıca, değeri saklamıyor dediğinizde, saklanan belirli dizinin sadece sıfır olduğunu mu varsayıyorum? Kodunuzda herhangi bir uyarı var mı? – Madhu

+0

Kod ekledim ... – DShah

cevap

20

Eğer dizesine dönüştürerek ve dize olarak kaydederek neden sonra NSURL saklamak istiyorsanız. İş çaban artacak.

Bu deneyebilirsiniz: Eğer url depolamak nerede

dize özelliği ilan etmesi gerekirdi
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];  
    [defaults setURL:[NSURL URLWithString:@"http://www.google.com"] forKey:@"urlValue"]; 
    [defaults synchronize]; 

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

Umarım bu çözüm probleminizi çözecektir. – Gypsa

+0

Neden [varsayılanlar senkronize edilir] ?? – DShah

+0

Aslında, bu yöntemler otomatik olarak periyodik aralıklarla çağrı yapar ve verileri otomatik olarak güncelleştirir, ancak güncelleme yapılmazsa ve bunu kullanırsanız, eski sonuçları değiştirilmez, böylece manuel olarak çağrılır, böylece verilerinizi hemen kaydedebilmeniz için el ile çağrılır. . [NSURL URLWithString: ..] yerine – Gypsa

1

tek şey böylece URL en azından kısmen rastgele oluşturulmuş olmasıdır açıklamak olacağını düşünüyorum ve edebilirsiniz size app referansını kaldırır sonra yüklenmemesi ona. Ne demek "kapalı"? Backgrounded? Ya da gerçekten sonlandırıldı?

Ayrıca yerine bir nesnenin string:yourURLString forKey:@"URL" olarak kaydederek gerektiğini olabilir. Bu uygulamayı kafa karıştırıcı olabilir. URL dizesini çıkarmak ve ne aldığınızı görmek için NSLog'u deneyin. Ne olduğunu bilmeme izin ver. Bu şeyleri açıklığa kavuşturur.

+0

Kod ve hata ekledim. Ayrıca her defasında uygulamam başlangıçtan başlar. Uygulamamın arka planda olmasına izin vermem, her zaman yeni gibi başlar. – DShah

+0

URL'yi çıktılamak için 'NSLog' kullanmayı denediniz mi? –

0

... sonra kod birkaç satır görebilir miyiz NSUserDefaults

+0

diğer tüm UserDefaults iyi çalışıyor ... sadece NSURL düzgün çalışmıyor ... – DShah

+0

NSURL örneğini oluşturmaya çalışıp bir özellik oluşturup sentezleyin ve sonra da ... – Maulik