我不知道下一步该做什么。它们只是来自文本字段的金额。我想把它们加在一起。
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'
也许我说这一切都错了......但我刚刚开始。
答案 0 :(得分:5)
您的checkAmountValue
和bankBalanceValue
实际上不是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
的实例。在你的情况下,你只是简单地投射到这个,这真的不会创建你需要的类型。