2010-04-25 136 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聲明工作沒有問題。我試着改變區域中的代碼來引起問題,但我不能。

所以,非常好奇!