0

私のアプリには、ユーザーが UITextField に情報を入力するダイアログ ボックスがあります。先に進む前に、UITextField.text の値が何かに等しいことを確認する必要があります (ユーザーが送信ボタンをクリックすると、値が取得されます)。ただし、私の条件 (以下を参照) は失敗し続けます。

if (userAssignedName || userAssignedName.length > 0 || ![userAssignedName isEqualToString:@""]) {
 //do something
} else { 
[alertManager showAlert:@"You must enter a name for this OR"];
}

条件の直前に userAssignedName をコンソール ログに記録すると、期待どおりの結果が得られますが、何も得られません。

文字列に値があることを確認するにはどうすればよいですか?

4

2 に答える 2

4

解決策は簡単です。3 つの値のいずれかが YES/true 値を返します。

![userAssignedName isEqualToString:@""]

これにより、文字列が空の文字列と等しいかどうかがチェックされます。(テキストフィールドのデフォルトはどれですか?)これは良いことです。

userAssignedName.length > 0

これにより、文字列内の文字がチェックされます。これも、必要がない場合を除いて問題ありません。テキストフィールドに最大文字数を保持するために主に使用されます。

userAssignedName

これは、実際の変数がインスタンス化されているかどうかを確認します。また、ユーザー入力は一切関与しませんし、関与すべきではありません。これを削除しても、チェックは失敗しません。

解決:

if (/*userAssignedName.length > 0 ||*/ ![userAssignedName isEqualToString:@""]) 
{
    //do something
} 
else 
{ 
    [alertManager showAlert:@"You must enter a name for this OR"];
}

これでうまくいくはずです。そして、コメントを使用するかどうかはあなた次第です。

于 2012-12-07T15:29:35.280 に答える
0

これを置き換えます:

if (userAssignedName || userAssignedName.length > 0 || ![userAssignedName isEqualToString:@""]) {

と:

if (userAssignedName.length > 0) {

使用したくないもの:

if (![userAssignedName isEqualToString:@""]) {

userAssignedNameisの場合、失敗したいときにnilこのステートメントが成功するためです。if

于 2012-12-07T15:36:51.323 に答える