2012-12-19 2 views
2

나타납니다. 감사합니다NSDecimalNumber가 NaN의

내 코드 :

- (IBAction)saveChanges:(id)sender { 
    editGift.nameOfGift = nameTextField.text; 
    editGift.priceOfGift = [NSDecimalNumber decimalNumberWithString:priceTextField.text]; 

    AppDelegate *myApp = (AppDelegate *) [[UIApplication sharedApplication]delegate]; 
    [myApp saveContext]; 
    [self.delegate editGiftViewControllerDidSave:self]; 
} 

Please watch video explanation

입력 값 :

currencyFormatter = [[NSNumberFormatter alloc]init]; 

[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle]; 

personGift.priceOfGift = [NSDecimalNumber decimalNumberWithString:priceTextField.text]; 
+0

'priceTextField.text'는 무엇인가요? –

+0

입력 값 : currencyFormatter = [[NSNumberFormatter alloc] init]; [currencyFormatter setNumberStyle : NSNumberFormatterCurrencyStyle]; personGift.priceOfGift = [NSDecimalNumber decimalNumberWithString : priceTextField.text]; – Astakhoff

+0

ur 입력 값이 NSDecimalNumber로 형식화되지 않아 NaN이 제공되지 않습니다. 입력을 확인하십시오! NSDecimalNumber에 넣고 게시하기 전에 텍스트 필드 값을 기록하십시오.) –

답변

3

귀하의 코드가 비디오 부여는 통화 서식을 적용 할 때 약 불분명하지만 가능성이 매우 높다 텍스트 필드의 값은 "$ 6,000"입니다. 이것은 숫자가 아닙니다 (따라서 "NaN").

+1

저는 Rob이 말한 것이 당신의 문제를 일으키는 원인이라고 믿습니다. '$'기호가 포함 된 텍스트 값을 가져 오는 중입니다. 사용자가 save를 클릭하면'priceTextField.text'에서 $ -sign을 제거하십시오. 그냥 머리로. 잘못된 번호를 확인할 수도 있습니다. like '1.2.3.4..00' – Christer

+0

Rob와 Christer 대단히 감사합니다. 텍스트 필드에서 $ -sign을 어떻게 제거 할 수 있습니까? – Astakhoff

+1

이미 통화 번호 포맷터가 있습니다. 텍스트를 'NSNumber'로 변환하려면 numberFromString :을 사용하십시오. 이상적으로는,'setGeneratesDecimalNumbers :'를 사용하여 10 진수를 얻을 수 있도록해야합니다. 이전에는 원하는대로 쉽게 작업 할 수 없었던 버그가 있었지만 잘하면 지금은 해결되었습니다 (몇 년이 지났음). http://stackoverflow.com/questions/317311/oboting-an-nsdecimalnumber-from-a-locale-specific-string을 참조하십시오. –

2

NSDecimalNumber 문서는 말한다 :

자리 게다가, numericString 초기 "+"또는 포함 할 수 있습니다 "-"를; 하나의 "E"또는 "e"는 과학 표기법으로 숫자의 지수를 나타냅니다. 숫자의 정수 부분에서 소수를 나눌 수있는 단일 NSDecimalSeparator. 유효 위해 -

당신은 priceTextField.text에서 문자열은 유효한 문자 포함되어 있는지 확인해야합니다. 특히 사용자 로케일에 따라 소수점 또는 십진수가 있는지 여부를 확인해야합니다. 따라서 다음을 사용하는 것이 좋습니다.

+ (NSDecimalNumber *)decimalNumberWithString:(NSString *)numericString 
locale:(NSDictionary *)locale 
+0

대단히 감사합니다. JOM !!! – Astakhoff

관련 문제