0

UITextFields5 の整数を合計して に投稿しようとしていUILabelます。

これは私が試したコードですが、正しく動作しません。ラベルに表示される数値は、テキスト フィールドの合計ではありません。また、ラベルの代わりにテキストフィールドに投稿しようとしましたが、同じ結果になりました。ビルド時にエラーや警告はありません。

int val = [textfield1.text intValue]
val = val+[textfield2.text intValue];
val = val+[textfield3.text intValue];
val = val+[textfield4.text intValue];
val = val+[textfield5.text intValue];

NSString *labelStr = [[NSString alloc] initWithFormat:@"%i", val];

label.text = labelStr;

コードに何か問題がありますか?代替コード?すべての回答に感謝します!

4

1 に答える 1

0

メモリリークを除けば、コードは多かれ少なかれ正しいように見えます。メモリ管理ルールを確認して、リークを修正する必要があります。

私の推測では、入力した数値の合計が の範囲外になると思いますint。たとえば、5 つのフィールドのそれぞれに 1000000000 (10**9) を入力することは、これを実行する 1 つの方法intです。

アプリの目的によっては、5 つの入力フィールドを単純に制限できる場合があります。意味のある最大値が maximum の 5 分の 1 未満の場合 (5 つのフィールドの場合、それらはすべて同じキャップを持っていると仮定しています) int、オーバーフローは不可能です。

キャップで問題が完全に解決しない場合は、別のタイプを試してください。値が決して負になってはならない場合は、符号なしの型を使用してください。それ以外の場合は、long long、またはいずれかの浮動小数点型を試すか、NSDecimalNumber オブジェクトを使用してください。

もちろん、あなたは入力した数字や結果を言わなかったので、完全に間違っている可能性があります。ゼロだった場合は、IB でアウトレットを接続していることを確認してください。それを忘れた場合、それらには が含まれておりnil、 を要求するとtextが返さnilれ、 を要求するintValueと 0 が返され、 0 + 0 + 0 + 0 + 0 = 0 が返されます。

于 2010-02-14T17:02:50.863 に答える