2010-04-25 57 views
1

我有一个应用程序已经在应用程序商店一段时间,并在OS 3.1 - 3.13完美的功能。然而,当在4.0b2上测试时,我注意到它每次都在同一个地方崩溃,但只在设备上,从来不在模拟器上。我正在使用3GS进行测试。NSNumberFormatter崩溃iPhone SDK 4.0b2

on loadView我初始化一个NSNumberFormatter对象,它在接口中声明并保留,所以我可以在任何地方访问它。在我的方法中,我多次调用将字符串值转换为nsnumbers以存储在可变字典中。

下面是一个例子:

[myDictionary setObject:[myStyleFormatter numberFromString:@"1"] forKey:@"hours"]; 
[myDictionary setObject:[myStyleFormatter numberFromString:@"30"] forKey:@"minutes"]; 
[myDictionary setObject:[myStyleFormatter numberFromString:@"10"] forKey:@"seconds"]; 

出于某种原因,因为它试图设置小时一旦崩溃。错误是“尝试插入零值(键:小时)”

我一直在做错什么? api是否改为4.0b2?

感谢,

豪伊

+1

首先检查问题出在'numberForString:'(返回'nil')还是'setObject:'(不接受有效的对象)? – 2010-04-25 02:17:32

+3

此SDK处于NDA之下。无论如何,您最好在Apple开发者论坛上提问,其中正在积极讨论4.0 SDK的问题:http://devforums.apple.com – 2010-04-25 02:40:12

+0

另外,如果这是SDK的真正bug,请在https上提交报告://bugreport.apple.com/ – 2010-04-26 14:27:16

回答

1

我有同样的问题。我追踪到一个NSNumberFormatter声明,该声明不像数字中的每3位数字中的空格(或逗号)。这是产生number formatter的原因之一。

NSNumber *number = [currencyFormatter numberFromString:mstring]; 

这是在互联网上的很多例子中相当标准的代码,所以我怀疑很多人会发现这个问题。

不管怎样,我通过摆脱空间

NSArray *sArray = [mstring componentsSeparatedByString:@" "]; 
[mstring setString:@" "]; //space at beginning is OK, would prefer nil 
for (NSString *sElement in sArray) { 
    [mstring appendString:sElement]; 
} 

然后currencyFormatter线工作的固定它。

但是,在我的代码的另一个领域,同样的currencyFormatter声明工作没有问题。我试着改变区域中的代码来引起问题,但我不能。

所以,非常好奇!