본문 바로가기

프로그래밍/iOS

[iOS] 현재 값 저장하기

//현재 값을 저장하는 함수

+(void)saveToUserDefaults:(NSString *)key value:(NSString *)value

{

    NSUserDefaults *standardUserDefaults = [NSUserDefaults standardUserDefaults];

    if(standardUserDefaults)

    {

        [standardUserDefaults setObject:value forKey:key];

        [standardUserDefaults synchronize];

    }

}

//저장한 값을 받아오는 함수

+(NSString *)retrieveFromUserDefaults:(NSString *)key

{

    NSUserDefaults *standardUserDefaults=[NSUserDefaults standardUserDefaults];

    NSString *val=nil;

    if(standardUserDefaults)

        val=[standardUserDefaults objectForKey:key];

    return val;

}

//버튼을 링크한 함수

- (IBAction)SaveButton:(id)sender {

//저장할 문자열

    NSString *speedString = [NSString stringWithFormat:@"%f",speedSlider.value];

    NSString *soundString = [NSString stringWithFormat:@"%d",soundSwitch.on];

    NSString *nameString=nameTextField.text;

    NSString *levelString=[NSString stringWithFormat:@"%d", levelSegment.selectedSegmentIndex];

//저장

    [ViewController saveToUserDefaults: GameSpeedID value:speedString];

    [ViewController saveToUserDefaults:SoundOnOffID value:soundString];

    [ViewController saveToUserDefaults:PlayerNameID value:nameString];

    [ViewController saveToUserDefaults:GameLevelID value:levelString];

 

}

//받아올 때

    NSString *gameSpeedString=[ViewController retrieveFromUserDefaults:GameSpeedID];

    NSString *soundOnOffString=[ViewController retrieveFromUserDefaults:SoundOnOffID];

    NSString *playerNameString=[ViewController retrieveFromUserDefaults:PlayerNameID];

    NSString *gameLevelString=[ViewController retrieveFromUserDefaults:GameLevelID];

//저장한 값이 있다면

    if(gameSpeedString!=nil)

    {

        NSLog(@"Load Saved Settings");

        [speedSlider setValue:[gameSpeedString floatValue]];

        [soundSwitch setOn:[soundOnOffString boolValue]];

        nameTextField.text=playerNameString;

        levelSegment.selectedSegmentIndex=[gameLevelString intValue];

    }

    else//없다면

    {

        NSLog(@"Application is first launched");

    }