终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因:“ - [NSDecimalNumber长度]:
问题描述:
随着这些行的代码:终止应用程序由于未捕获的异常 'NSInvalidArgumentException',原因:“ - [NSDecimalNumber长度]:
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
Whay is it crashing ??? ???
答
我猜想,你在[self.product objectForKey:@"Price"];
有型的问题,最有可能的对象我的猜测是,这个目标已经是一个NSDecimalNumber
,当你把它作为一个字符串,然后调用initWithString方法使用它,不好的事情发生
把一个断点:payment.amount = [[NSDecimalNumber alloc] initWithString:string];
然后键入po [string class]
进入调试器。
这会显示存储在[self.product objectForKey:@"Price"];
答
它看起来像你的string
对象不是NSString
。看起来它实际上是一个NSDecimalNumber
- 在那里设置断点并检查对象。 self.product
是什么类型的对象?