2010-08-05 5 views
0

텍스트 상자 항목에서 숫자를 가져 와서 문자열로 변환하고 길이를 가져 오려고합니다. (IE : 숫자에 LEN (someInteger) 수행).목표 C - 문자열의 수와 길이의 불일치

숫자가 0 또는 null 인 경우 일부 불일치가 발생하지만 제대로 작동 할 수있었습니다.

예 :

-(IBAction)update 
{ 
    // inputField is the number pad textbox 
    double myInput = [inputField.text doubleValue]; 

    // 
    NSNumber *c = [NSNumber numberWithDouble:myInput]; 
    NSString *myOutput = [c stringValue]; 

    NSLog(@"Starting number (number) = %@", c); 
    NSLog(@"myOutput (string) = %@", myOutput); 
    NSLog(@"myOutput (length) = %d", ([myOutput length])); 

} 

숫자에 대한 문자열 변환이 정상적으로 작동합니다. 내가 가지고있는 문제는 길이가있는 것입니다. 특히 숫자 (또는 null)가 없을 때 그렇습니다.

나는 공의 "텍스트"(자리 표시 자 그냥 "여기에 번호를 입력합니다"라고)

이있는 XIB에 숫자 패드 텍스트 상자 항목이 먼저 텍스트 상자 "텍스트로 입력을 시작하면 "사라지고 빈 텍스트 상자로 시작합니다.

문제 1 - 텍스트 상자를 처음 입력하면 텍스트 상자에는 아무 것도 나타나지 않지만 NSLog는 출력 길이가 1 자 길이라고 말합니다.

시각적으로 텍스트 상자에는 아무 것도 없지만 [myOutput length]는 1 문자 길이를보고하기 때문에 문제가 발생합니다.

문제 2 - 숫자 입력을 시작하면 모든 것이 잘 진행되지만 텍스트 상자를 완전히 지운 지점으로 숫자를 제거하기 시작하면 문자가 1 자 길이로보고됩니다.

텍스트 상자에 아무것도 표시되지 않으면 어떻게 1 자 길이를 읽을 수 있습니까? 나는 그것이 "텍스트"(신원 검사원으로부터)이어야한다고 생각합니다.

요약.

  1. 숫자 패드 텍스트 상자 입력 필드가 있습니다. 항목을 업데이트 할 때마다 IBaction 업데이트 메소드가 호출됩니다.

  2. 처음 입력란에 숫자를 입력하면 시각적으로 입력란에 숫자가 표시되지 않지만 NSLog는 길이가 1 자 길이라고보고합니다.

  3. 숫자 입력을 시작한 다음 한 번에 하나씩 제거하기 시작하면 모든 숫자를 완전히 제거 할 때까지 길이를 1 자 길이로보고합니다.

두 경우 모두 NSLog는 0 길이를보고해야하지만 절대 그렇지 않습니다. 나는 [myOutput length] - 1을 시도했다. 그러나 이것은 나에게 이상한 결과를 준다.

이에 어떤 도움도 큰

감사 할 것이다.

답변

3

텍스트가 없으면 myInput은 0.0과 같습니다. myOutput은 길이가 1 인 @"0"과 같습니다.

[inputField.text length]을 사용하지 않는 이유는 무엇입니까?

NSNumber *number = nil; 
if ([inputField.text length] > 0) { 
    number = [NSNumber numberWithDouble:[inputField.text doubleValue]]; 
} 

존재하는 경우 당신은 당신의 번호를 가지고 그런 식으로, 그렇지 않으면 numbernil 될 것입니다 :

은 당신이 뭔가를 할 수 있습니다.

+0

오, 나는 그것을 시도하고 그것이 작동하는지 확인합니다. 고마워요! – zardon

+0

그 덕분에 잘됐다! 고마워! – zardon