2016-07-25 1 views
-1

내가 문자열 "이름"을 가지고 있는데 그래서 난이 노력을 저장 NSUserDefaults를 사용하고 있습니다 "EntityType"라는 클래스가 내부 변수를 저장 :목표 C - NSUserDefaults

if (button.selected) 
{ 
    [button setSelected:YES]; 
    [[NSUserDefaults standardUserDefaults]setObject:[NSNumber numberWithBool:YES] forKey:@"buttonSelected"]; 
} 

내가 액세스하려는를 변수를 다른 클래스에서 가져 와서 NSUserDefaults 안에 저장하십시오.

+0

왜 NSUserDefaults에 버튼의 선택된 상태를 저장하겠습니까? – Droppy

+0

내가 눌린 버튼에 따라 조건이 있기 때문에 – aboodmanna

+0

당신은 앱의 다른 부분들 사이에 정보를 전달하기 위해 NSUserDefaults를 사용하고 있습니까? – Droppy

답변

0

부재 중 동기화 호출이 있습니다. 저장하려면 이것을 적용하십시오.

if (button.selected) 
{ 
    [button setSelected:YES]; 
    [[NSUserDefaults standardUserDefaults]setObject:[NSNumber numberWithBool:YES] forKey:@"buttonSelected"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 

} 

경우에만 값을 저장하려면 나중에

NSNumber* savedValue = [[NSUserDefaults standardUserDefaults] 
    objectForKey:@"buttonSelected"]; 

이것은 그것을 다시 얻을 수 있습니다. 이 링크 How to store custom objects in NSUserDefaults

+0

에 저장해야합니다. EntityType 클래스에 속성 인 "name"문자열을 어디에 배치해야합니까? – aboodmanna

+0

당신은 동기화가 필요하지 않습니다. 이것은 사용자 기본값을 File로 쓰기 만합니다. 어쨌든 정기적으로 발생합니다. 파일에 쓰지 않고도 메모리의 기본값을 읽고 쓸 수 있습니다. –

+0

나는 아직도 그것을 얻지 못한다. EntityType 클래스의 속성 인 "name"이라는 문자열의 값을 어디에 두어야 하는가? – aboodmanna

0

에서 사용자 정의 개체의 모양을 저장하려면 당신은 어디에서나 응용 프로그램에서에서 같은

NSNumber *num = [[NSUserDefaults standardUserDefaults] objectForKey:@"buttonSelected"]; 

NSNumber 개체를 얻을 수 있습니다. 당신의 EntityType 클래스에

+0

EntityType 클래스 안에있는 속성 인 "name"문자열을 저장해야합니다. – aboodmanna

0

, 인코딩 및 디코딩 (자신의 개체와 관련된 무엇인가)에 대해 다음 두 가지 방법으로 구현 : NSUserDefaults에서

- (void)encodeWithCoder:(NSCoder *)encoder { 
    //Encode properties, other class variables, etc 
    [encoder encodeObject:self.name forKey:@"name"]; 
} 

- (id)initWithCoder:(NSCoder *)decoder { 
    if((self = [super init])) { 
     //decode properties, other class vars 
     self.name = [decoder decodeObjectForKey:@"name"]; 
    } 
    return self; 
} 

읽기와 쓰기를 :

- (void)saveCustomObject:(MyObject *)object key:(NSString *)key { 
    NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:object]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:encodedObject forKey:key]; 
    [defaults synchronize]; 

} 

- (MyObject *)loadCustomObjectWithKey:(NSString *)key { 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSData *encodedObject = [defaults objectForKey:key]; 
    MyObject *object = [NSKeyedUnarchiver unarchiveObjectWithData:encodedObject]; 
    return object; 
} 

코드에서 빌린 : save class in NSUserDefaults