0

次に何をすべきかわかりません。それらは、テキスト フィールドからの単なる金額です。私はそれらを一緒に追加しようとしています。

NSString *checkAmount = [checkAmountInput.text substringFromIndex:1];
NSDecimalNumber *checkAmountValue = (NSDecimalNumber*)[NSString stringWithFormat:@"%@",checkAmount];
NSLog(@"%@", checkAmountValue);

NSString *bankBalance = [bankBalanceInput.text substringFromIndex:1];
NSDecimalNumber *bankBalanceValue = (NSDecimalNumber*)[NSString stringWithFormat:@"%@",bankBalance];
NSLog(@"%@", bankBalanceValue);

NSDecimalNumber *totalAmount = 

NSLog(@"%@",totalAmount);

decimalNumberByAdding を使用しようとすると、次のようになります。

'-[__NSCFString decimalNumberByAdding:]: unrecognized selector sent to instance 0x8a39a10'

たぶん、私はこれについてすべて間違っています...しかし、私はまた始めたばかりです。

4

2 に答える 2

5

あなたcheckAmountValuebankBalanceValue実際にはNSDecimalNumberインスタンスではありません。を にキャストするNSStringNSDecimalNumber、コンパイラの警告が消えますが、オブジェクトは依然として単なる文字列です。

decimalNumberWithString:文字列から実際のNSDecimalNumberインスタンスを作成するために使用できます。

NSString *bankBalance = [bankBalanceInput.text substringFromIndex:1];
NSDecimalNumber *bankBalanceValue = [NSDecimalNumber decimalNumberWithString:bankBalance];
于 2013-06-21T02:57:35.397 に答える
0

そこにはいくつかの混同されたコードがあります。事実上、やりたいことは two からテキストを取得し、NSTextFieldsそれらを変換してNSDecimalNumbers追加することです。あなたは確かにそれを行うことができます. NSTextFieldは、文字列値を直接「解析」して、数値型 (int、double、float) を直接返すこともできることに注意してください。

double d = [textField doubleValue];

それでも NSDecimalNumber を使用し、NSString から解析したい場合:

NSString *s = [textField stringValue];

文字列を NSDecimalNumber に変換するには:

NSDecimalNumber *n1 = [NSDecimalNumber decimalNumberWithString:s]
NSDecimalNumber *n2 = // repeat as above for the second string

それらを一緒に追加するには:

NSDecimalNumber *n3 = [n1 decimalNumberByAdding:n2];

は、文字列を解析してdecimalNumberWithStringのインスタンスを作成するクラス ファクトリ メソッドであることに注意してください。NSDecimalNumberあなたの場合、これにキャストするだけで、実際には必要なタイプが作成されません。

于 2013-06-21T03:05:44.350 に答える