由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [NSDecimalNumber length]:

时间:2013-12-17 21:12:26

标签: ios paypal parse-platform

使用以下代码行:

PayPalPayment *payment = [[PayPalPayment alloc] init];
NSLog(@"Price %@",[self.product objectForKey:@"Price"]);
NSString *string = [self.product objectForKey:@"Price"];
payment.amount = [[NSDecimalNumber alloc] initWithString:string];

我的应用程序崩溃了这个日志:

[NSDecimalNumber length]: unrecognized selector sent to instance

NSLog正在返回:

Price 96.67

真是崩溃???

2 个答案:

答案 0 :(得分:5)

我猜你有类型问题,最有可能的是对象 [self.product objectForKey:@"Price"];
我的猜测是这个对象已经是NSDecimalNumber了,当你把它当作一个字符串处理然后用它来调用initWithString方法时,会发生不好的事情

断点:
payment.amount = [[NSDecimalNumber alloc] initWithString:string];

然后在调试器中输入po [string class]

这将显示存储在[self.product objectForKey:@"Price"];

的对象类型

答案 1 :(得分:0)

您的string对象看起来不是NSString。看起来它实际上是NSDecimalNumber - 在那里设置断点并检查对象。什么类型的对象是self.product

相关问题