2012-02-09 2 views

답변

53

NSUserDefaults 내의 객체가 비어 있는지 확인하는 방법이 없습니다. 그러나 특정 키의 값이 nil인지 여부는 확인할 수 있습니다.

NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults]; 

NSObject * object = [prefs objectForKey:@"your_particular_key"]; 
if(object != nil){ 
    //object is there 
} 
+0

감사합니다. –

+0

굉장한 솔루션 ... :) – Adi

1
NSUserDefaults *data = [NSUserDefaults standardUserDefaults]; 
NSString *string = [data objectForKey:@"yourKey"]; 
if(string==nil) 
NSlog(@"nil") 

특정 값이 설정되어 있는지 여부를 확인하려면 NSUserDefault documentation

// For saving the values 
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults]; 
// saving an NSString 
[userDefaults setObject:@"Ttest" forKey:@"key"]; 
// --- For Retrieving 

NSUserDefaults * userDefaults = [NSUserDefaults standardUserDefaults]; 
// getting an NSString 
NSString *myString = [userDefaults stringForKey:@"key"]; 
+0

@Krishnabhadra 상태와 같이 NULL이 아닌 nil과 비교해야합니다. –

+0

@PhilippeSabourin 감사합니다. NULL은 void *입니다. nil은 id입니다. –

0

를 살펴 보자 여부, 아니 (전역 또는 응용 프로그램의) 위치의 문제는, -[NSUserDefaults objectForKey:]의 반환 값을 확인

id obj = [[NSUserDefaults standardUserDefaults] objectForKey:@"My-Key-Name"]; 
if (obj != nil) {...} 

응용 프로그램 (번들)에 사용자 기본값에 저장된 설정이 있는지 확인하려면 : 당신이 시스템 전역 설정을 포함 -[NSUserDefaults objectForKey:] 뭔가를 반환하는 모든 가능한 값에 관심이 있다면

NSUserDefaults* sdu = [NSUserDefaults standardUserDefaults]; 

NSString* bundleId = [[NSBundle mainBundle] bundleIdentifier]; 
NSDictionary* mainBundleSettings = [sdu persistentDomainForName:bundleId]; 

NSLog(@"%@", mainBundleSettings); 

, 단순히

NSDictionary* allPossibleSettings = [sdu dictionaryRepresentation]; 

NSUserDefaults가 비어 결코 호출합니다. 전역 설정, 번들 설정, 임시 데이터 및 어쩌면 다른 것을 결합합니다. 예를 들어, 호출하는 경우 :

[[NSUserDefaults standardUserDefaults] objectForKey:@"NSBoldSystemFont"] 

당신이 당신의 응용 프로그램이이 값을 설정 적이없는 경우에도 전역 설정에서 촬영 될 @"LucidaGrande-Bold" 문자열 값을 얻을 것이다.

관련 문제