2012-08-26 93 views
0

我正在實現一個簡單的計算器。NSMutable字符串問題

每次用戶點擊的數字按鍵,sender.tag被附加到調用然後在屏幕上顯示一個displayString nsmutable字符串。

的可變的字符串與大小發起40.

奇怪的是,在進入10位數字,例如1111111111後,串錯誤的行爲。

如果繼續單擊數字按鈕'1',字符串不會再附加'1',但是會出現另一個值,例如2或6 ...並突然顯示一個數字,如25469632154

經過與調試 - 這個問題並非來自顯示器,但是從字符串本身沒有正確追加。

難道是sender.tag不正確傳遞?

什麼能去錯在這裏?

[displayString appendString: [NSString stringWithFormat: @"%i", [sender tag]]]; 
self.lblDisplay.text = displayString; 
+0

你是什麼意思時,你說的可變的字符串與40號開始做? – Abizern

+0

你確定字符串不正確嗎?你可以在追加新標籤之前和之後發佈NSLog'ing displayString的結果嗎? –

回答

1

歡迎來到SO! 您可以嘗試記錄所有標籤以確定問題所在。

NSLog(@"%d", [sender tag]) 

Tag屬性爲NSInteger的類型,所以你可以使用%d改性劑代替%i。 您也可以使用appendFormat方法:

[displayString appendFormat:@"%d",[sender tag]]; 
self.lblDisplay.text = displayString; 
+0

感謝您的回答,但只是簽入調試器和發件人標籤是正確的。在第十一個輸入的數字中,最後兩位數字開始不規律地變化,然後在第13次點擊時,顯示一個完整的奇怪數字! –

+0

根據您關於%d而不是%i的說法再次嘗試,並嘗試添加格式,但沒有任何改進。 –

+0

self.displayString = [NSMutableString stringWithCapacity:40]; –

1

你爲什麼要使用NSMutableString?爲什麼不只是這樣做:

self.lblDisplay.text = [self.lblDisplay.text stringByAppendingFormat:@"%d", [sender tag]];

不管怎麼說,你是如何設置的標籤?請發佈該代碼。我的猜測是那裏出了問題,而不是傳遞標籤或追加價值。