2012-02-09 6 views
2

空かどうUItextfieldsをチェックする文は、このような場合、私は、これは簡単ながあります。ここではこれはif文に関する奇妙な質問です。 My Ifステートメントがおそらく動作しません。どうして?

if([UserID.text isEqualToString:@""] || [UserPass.text isEqualToString:@""]){ 
     UIAlertView *alertsuccess = [[UIAlertView alloc] initWithTitle:@"Error" 
                   message:@"Fields can not be empty." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil, nil]; 
     [alertsuccess show]; 
     [alertsuccess release]; 
    } 

を問題、私はビューはこれらUItextfieldsを持って入る最初の時間です。私はこのようにテストします

  • 両方UserID & UserPassは空です---> If文が正しく機能します。
  • UserIDは空ではありません& UserPassは空です--->動作していません。 2番目の条件が真であっても、if文をスキップしました。
  • UserIDが空です& UserPassは空ではありません---> If文が正しく動作します。

ここで興味深い部分は、テスト中にビューを終了しないとここにあります。 UserIDが空でないことを確認します。& UserPassが再び空です(上記のテスト#2)。次に、of文が正しく機能します。 テスト中にビューを終了すると、if文が再び奇妙な動作をします。

ここで間違っていたことを誰かが指摘してくれる人はいますか? ありがとうございました

答えて

1

トライ使用:([UserID.text長]> 0]){

+0

しかし、私のIf文で何が間違っているのか分かりますか? – JHHoang

+1

私はテキストフィールドが空であれば、テキストプロパティをnil(@ ""ではなく)に設定すると思います。 – NeverBe

+0

あなたは正しいです。それはnilに設定されます。そして問題はviewWillAppearで、私はUserPass = nilを設定しました。そういうわけで、IFの声明が変わったのです。どうもありがとうございました。 – JHHoang

0

有線あなたのUserIDとUserPassがIBOutletとして定義され、IBで接続されているかどうかチェックしましたか?

+0

私はそれらをIBで接続しました。これは、becomeFirstResponderに関連していますか? – JHHoang

+0

いいえ、それはあなたがカーソルを置く場所です。私は問題が正しく接続されていないか、または値が何とかリセットされていると思います。まだわかりませんが、私があなたの場合は、ブレークポイントを設定して値を監視します。申し訳ありませんが私が言うことができる唯一のものです。幸運 –

+0

ありがとう、私はこの奇妙なことを解決するときに皆さんに知らせるでしょう。 – JHHoang

0

はのNSLogをしようとした場合( "ブール値:%のD"、[UserID.text isEqualToString:@ ""] || [UserPass。テキストisEqualToString:@ ""]);ブール値を確認する前にIF文を評価してください。

+0

ブール値は1です。 0;上記のテストでは1、 – JHHoang

1

UserPass(またはUserPass.text)のようなサウンドは、あなたの思うところに設定されていません。 nilに設定すると、isEqualToStringが常にfalseを返すようになります。あなたが時々それを働かせなかったなら、私は断線されたアウトレットがあると言います。

+0

IBで2つ接続しました。 – JHHoang

+0

@JHHoangプロパティの宣言を質問に追加できますか? –

+0

問題は解決しました。ありがとうございました。 – JHHoang

関連する問題