2012-06-17 6 views
0

NSUserDefault 키 prevmode에 레이블 값을 저장하려고하지만 저장할 때 나타나지 않고 디버거에 표시된 후 다시 호출하려고 시도 할 때 Invalid CFStringRef. 저장NSUserDefaults iOS 문자열 저장 오류

코드는

//Check for previous mode 
NSUserDefaults *defaults; 
NSString *prevmode; 
prevmode = passLength.text; 

[defaults setObject:prevmode forKey:@"prevmode"]; 

및 복구 할 수있는 당신은 setValue:을 사용하고 기본값으로 설정 한 후 동기화해야

NSUserDefaults *defaults; 

NSString *prevmode; 

prevmode = [defaults objectForKey:@"prevmode"]; 
+1

당신이 값을 _storing_ 때 디버거가 무엇을 말합니까? 문자열을 사용하는 경우 setString : forKey 및 stringForKey도 사용할 수 있습니다. – jrturton

+0

setString이 존재하지 않습니까? 그렇다면 디버거는 내가 잘못된 CFStringRef를 말했을 때만 말합니다 – jskrwyk

+1

세부 사항을 고집하는 중 ... 실제로 userDefaults 객체에 대한 실제가 아닌 참조가 있습니까? 즉 NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults]; –

답변

3

, 우리는 NSUserDefaults의 인스턴스에 유효한 포인터를 필요

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
1

입니다. 사용을 검색하면 valueForKey:

저장하려면 :

[[NSUserDefaults standardUserDefaults] setValue:prevmode forKey:@"prevmode"]; 
[[NSUserDefaults standardUserDefaults] synchronize]; 

그리고 검색이 도움이

[[NSUserDefaults standardUserDefaults] valueForKey:@"prevmode"]; 

희망을. 위의 의견 표현으로

+1

키에 대한 Object가 좋으며 매우 드문 경우를 제외하고 동기화를 수동으로 호출 할 필요가 없습니다. – jrturton

+0

@jrturton이 맞습니다. 그러나이 상황에서는'synchronize'가 * 문제이므로 downvote하지 않습니다. –

+1

'synchronize'는 문제가 아닙니다. 기본값을 제대로 정의하지 않았습니다. – jskrwyk