2011-09-14 9 views
5

NSUserDefault에 iPod 라이브러리의 NSURL을 저장하는 데 Previous Post을 참조하고 있습니다. 그러나 응용 프로그램을 닫은 후에 NSUserDefault에 저장되지 않습니다.NSUser는 NSUserDefault에 절대 문자열로 저장되지 않습니다.

완벽하게 수행되는 NSUserDefaults에 저장하기 위해 다른 NSString을 사용하고 있습니다. 그러나 NSUrl을 절대 문자열로 저장할 때 값을 저장하지 않습니다.

왜 그런가?

편집

내가 NSUserDefault 값 저장하기 위해 사용하고 다음 코드를 내가 NSURL을 저장하려고하면

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

다음과 같은 오류가 온다 :

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

에 저장하려고? 또한, 값을 저장하지 않는다고 말할 때, 저장된 특정 문자열은 단순히 nil이라고 가정합니다. 코드에 대한 경고? – Madhu

+0

코드를 추가했습니다 ... – DShah

답변

20

NSURL을 저장하려면 왜 문자열로 변환하고 문자열로 저장해야합니까? 그것은 당신의 노력을 증가시킬 것입니다.

이 작업을 시도 할 수 있습니다 : 당신이 URL을 저장하는 곳

이 문자열 속성을 선언해야
NSUserDefaults *defaults=[NSUserDefaults standardUserDefaults];  
    [defaults setURL:[NSURL URLWithString:@"http://www.google.com"] forKey:@"urlValue"]; 
    [defaults synchronize]; 

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

이 솔루션으로 문제가 해결되기를 바랍니다. – Gypsa

+0

[기본값 동기화] 사용 이유 ?? – DShah

+0

실제로이 메소드는 주기적으로 자동으로 호출하고 데이터를 자동으로 호출하지만 업데이트되지 않은 경우에는 사용하지 않으면 수정되지 않은 이전 결과가 표시되므로 수동으로 호출되므로 데이터를 즉시 저장할 수 있습니다 . [NSURL URLWithString : ..] 대신 – Gypsa

1

유일한 I URL이 적어도 부분적으로 무작위로 생성되어 앱이 참조를 제거한 후에로드하지 못한다는 것을 설명 할 수 있다고 생각할 수 있습니다. 그것에. "닫았다"는게 무슨 소리 야? 배경? 아니면 정말 끝났어?

개체 대신 string:yourURLString forKey:@"URL"으로 저장해야 할 수도 있습니다. 앱을 혼란스럽게 할 수 있습니다. NSLog을 시도해 URL 문자열을 출력하고 얻은 결과를 확인하십시오. 그것이 무엇인지 알려주세요. 그것은 사물을 분명히 할 것입니다.

+0

코드와 오류가 추가되었습니다. 또한 내 앱이 처음부터 시작될 때마다. 내 앱이 백그라운드에있는 것을 허용하지 않습니다. 항상 새로운 앱으로 시작됩니다. – DShah

+0

'NSLog'를 사용하여 URL을 출력 해 보셨습니까? –

0

... 우리는 몇 줄의 코드를 볼 수 NSUserDefaults

+0

다른 모든 UserDefaults가 잘 작동합니다 ... NSURL이 제대로 작동하지 않습니다 ... – DShah

+0

NSURL의 인스턴스를 만들고 속성을 만들고 합성 한 다음 저장하려고합니다 ... – Maulik

관련 문제