NSDecimalNumber,补充,但不确定

时间:2013-06-21 02:42:18

标签: ios objective-c

我不知道下一步该做什么。它们只是来自文本字段的金额。我想把它们加在一起。

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'

也许我说这一切都错了......但我刚刚开始。

2 个答案:

答案 0 :(得分:5)

您的checkAmountValuebankBalanceValue实际上不是NSDecimalNumber个实例。将NSString转换为NSDecimalNumber会使编译器警告静音,但对象仍然只是字符串。

您可以使用decimalNumberWithString:从字符串中创建实际的NSDecimalNumber实例:

NSString *bankBalance = [bankBalanceInput.text substringFromIndex:1];
NSDecimalNumber *bankBalanceValue = [NSDecimalNumber decimalNumberWithString:bankBalance];

答案 1 :(得分:0)

那里有一些混合代码。实际上,您要执行的操作是从两个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的实例。在你的情况下,你只是简单地投射到这个,这真的不会创建你需要的类型。