2013-12-17 98 views
1

随着这些行的代码:终止应用程序由于未捕获的异常 '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 ??? ???

回答

5

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

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

然后键入po [string class]进入调试器。

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

0

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

相关问题