2012-01-20 15 views
0

私は、(UITextViewからの)ユーザー入力を受け取り、入力をあらかじめ定義された値と比較するアプリケーションを作成しています。 テキストフィールドのすべての入力は数値でなければなりません。したがって、このコードを使用して、ボタンを押したときにNSStringをint値に変換します。intオブジェクトと数値の値を比較しても機能しませんか?

(年齢はテキストビューである)

NSString *ageString = age.text; 
int ageInt = [ageString intValue]; 

私は、アプリケーションのすべての作品を実行して、私が得るとき私は、その後の数字

if (ageInt > 12) { 
    label1.textColor = [UIColor greenColor];} 
else { 
    label1.textColor = [UIColor redColor]; 
} 

の定義済みリストにテキストを比較するには、このコードを使用しますしかし、私は "age" textViewに値を入力すると、あらかじめ定義された値(13と言う)よりも大きいので、それでもラベル1は赤に変わります。

したがって、この問題の概要は、値が比較されているときに正しく比較されないことです。なぜ誰かがそれを知っていれば私は興味がありますか?おそらく私は間違ったクラスを使用していますか?

+0

デバッガは 'ageInt'の値があなたの失敗のケースにあると何を言いましたか? –

+0

奇妙なことに、デバッガはエラーを出さない。 コードが2つの数値の値を正しく比較しないようにしてください。 何が起こっているのかについての入力がある場合は、私は興味があります – GORERA3

+0

私はエラーについて尋ねていません。デバッガは 'ageInt'の値は何であると言いますか? –

答えて

1

NSLogageIntageIntは本当に> 12と理由はないことを、問題を示すべき

int ageInt = [ageString intValue]; 

:右後

NSLog(@"age.text: %s, ageInt: %d", age.text, ageInt); 

ageIntが> 13の場合、カラー設定コードが呼び出されていないか、呼び出し後に色がリセットされています。

Xcodeにいくつかのブレークポイントを追加して、正しいカラーセッターが呼び出されていることを確認してください。その時点でageIntの値を使用してください。

+0

私はあなたが正しいと思います。読み込み後のロギングは適切な場所ではありません。使用されている場所を記録する必要があります。または両方、理想的には。 –

+0

私はデバッガでそれを実行し続け、問題の原因を見つけようとしますが、 私は自分のコンバージョンや比較で何か間違ったことがあった場合、私はちょうど好奇心だった ありがとうございました – GORERA3

+0

固定!あなたは正しい、私はコードのどこかに値を再設定していた、確かではないが、私はそれに取り組んでいる。ありがとうございました! – GORERA3

関連する問題