2013-12-19 2 views
0

다음은 스테퍼를 사용하여 myLabel의 값을 설정하는 다음 코드입니다. 값을 NSUserDefaults에 저장하도록 설정했습니다.UIStepper - NSUserDefaults에서 값을 설정하십시오.

1) 또한 스테퍼 값을 레이블에 넣은 것과 같은 숫자로 설정해야합니다. 누군가 제발 할 수있는 방법을 조언 해 주시겠습니까? (필자는이 코드가 있어야한다고 생각하는 코드에 주석을 추가했습니다.)

2) 실제로 설정 한 saveString을로드하기 전에 확인하고 싶지 않은 경우 기본값을 설정하십시오. 또한 이것을 달성하는 방법을 조언 해 줄 수 있습니까?

감사합니다. 다음

- (void)viewWillAppear:(BOOL)animated 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSString *loadString = [defaults objectForKey:@"saveString"]; 
    self.myLabel.text = loadString; 
// Need to set the stepper value to that in loadString 
} 

- (IBAction)stepChanged:(id)sender { 
    NSString *saveString = [NSString stringWithFormat:@"%d", 
          [[NSNumber numberWithDouble:[(UIStepper *)sender value]] intValue]]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:saveString forKey:@"saveString"]; 
    [defaults synchronize]; 
    self.myLabel.text = saveString; 
} 

는 I 코드를 업데이트 -

- (void)viewWillAppear:(BOOL)animated 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    NSNumber *loadNumber = [defaults objectForKey:@"saveNumber"]; 
    self.myLabel.text = [NSString stringWithFormat:@"%@",loadNumber]; 
    UIStepper *stepper = [[UIStepper alloc] init]; 
    stepper.value = [NSNumber numberWithDouble:loadNumber]; 
} 

- (IBAction)stepChanged:(id)sender { 
    NSNumber *saveNumber = [NSNumber numberWithDouble:[(UIStepper *)sender value]]; 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
    [defaults setObject:saveNumber forKey:@"saveNumber"]; 
    [defaults synchronize]; 
    self.myLabel.text = [NSString stringWithFormat:@"%@",saveNumber]; 
} 

그러나 라인 'stepper.value = numberWithDouble의 NSNumber : loadNumber];' 오류 ''NSNumber * __ strong '을'호환되지 않는 유형 'double' '매개 변수로 보내는 오류가 있습니다. 스테퍼는 이중을 허용하지만 설정을 잘못했는지 확신 할 수 없습니다.

달성 해야하는 것은 다음과 같습니다 : - 1) saveNumber에 대해 NSUserDefaults에 기본값이 설정되어 있습니다. 사용자가 변형 할 때까지 사용됩니다. 2)로드 또는보기에 saveNumber를 사용하여 값을 설정하십시오. 모두 stepper.value 및 myLabel. 3) 스테퍼 변경할 때, 값이 myLabel으로 업데이트되며, NSUserDefaults saveNumber도 업데이트되어 있는지 확인합니다.

사람이 내가 잘못 가고 어디 조언, 내 코드를 수정 도울 수 제발?

마지막으로 입력 한대로 깨달은 것은 최종 응용 프로그램에서 NSUserDefaults savedNumber 값을 사용할 뷰 컨트롤러에이 설정을 적용한다는 것입니다. 이것을 염두에두고, savedNumber가이 viewController뿐만 아니라 다른 값을 사용할 수 있도록하는 방법을 알려 주실 수 있습니까?

감사합니다. 질문 1에 대해서는

+0

stepper.value = '[loadNumber doubleValue];' 트릭을해야합니다. NSUserDefaults는 정보가 로컬 파일 시스템에 저장되기 때문에 다른 모든 뷰 컨트롤러에서도 사용할 수 있습니다. 현재 다른 뷰 컨트롤러에서 정보를 얻으십시오. – dehlen

+0

@dehlen http://stackoverflow.com/questions/20708074/ios-uistepper-nsuserdefaults-how-to-manage-them-together-and-use-a-double을 살펴보십시오. 나는 당신이 지금 말했듯이 그 문제를 가지고 있지만 여전히 문제가 있습니다. – MrNeilM

답변

1

: 그냥 만드는 하나 개의 인스턴스 변수 int stepper; (당신의 .H에서) 다음 viewWillAppear 세트 당신이 순간처럼이 변수; , NSUserDefaults가 특정 키에 대한 기본값을 등록 할 수있는 가능성을 제공합니다 이것 좀 있습니다 : 그냥 질문 2에 대해서는

stepper++; 
self.myLabel.text = [NSString stringWithFormat:@"%i",stepper]; 
and save it in your NSUserDefaults. 

를 호출하여 IBAction를에서

stepper = [defaults integerForKey:@"stepper"]; 

을 설정

NSDictionary *defaults = [NSDictionary dictionaryWithObjectsAndKeys: 
           @"test", @"key", 
           nil]; 
[[NSUserDefaults standardUserDefaults] registerDefaults:defaults]; 
+0

참조 - (IBAction) stepChanged : (id) NSUserDefaults를 설정하고 변경시 레이블을 업데이트하는 보낸 사람. – MrNeilM

+0

내 편집 된 답변보기 – dehlen

+0

고맙습니다. 나는이 작업을하는 방법을 완전히 모르고 있었고, 내 질문에 코드를 수정했다. 어떤 의견? – MrNeilM

0

하는 경우를 NSUserDefaults에 아무것도 설정되어 있지 않으므로 objectForKey 메서드는 nil을 반환하므로 loadStringnil이됩니다.

지금, 당신은 당신이 번호로 문자열에서 저장 값, [loadString floatValue]; 뭔가를 변환 할 수 있지만, 아마도 더 좋은 방법은 올바른 값으로 userDefaults 내로 NSNumber를 저장하고, stringWithFormat와 레이블 텍스트를 다시하는 것 방법.

+0

고맙습니다. 나는이 작업을하는 방법을 완전히 모르고 있었고, 내 질문에 코드를 수정했다. 어떤 의견? – MrNeilM

+0

줄은 stepper.value 여야합니다. [loadNumber doubleValue]; – Adis

+0

http://stackoverflow.com/questions/20708074/ios-uistepper-nsuserdefaults-how-to-manage-them-together-and-use-a-double을 살펴보십시오. 나는 지금 그 문제를 가지고 있지만 여전히 문제가있다. – MrNeilM

관련 문제