2012-04-01 7 views
1

マイアプリをチェックし、それが起動したときにNSStringのは、このように、空の場合:空の文字列がある場合にViewDidLoadで空のNSStringをチェックしていますか?

if ([checkfieldstring1 isEqualToString:@""]) { 

    checkboxButton.hidden = YES; 
} 
else { 

    checkboxbutton.hidden = NO; 
} 

しかし、ボタンが隠されていません。私はこのメソッドがボタンにIBActionとして接続しても、ViewDidLoadには接続しないことを知っています...

+1

if ...行にブレークポイントを置き、checkfieldstring1を検査します。それはゼロかもしれませんか? – tassinari

+0

NSLogをそこに置きます。 –

+0

'viewDidLoad'から' viewWillAppear: 'にコードをシフトして、やり直してください。私はviewDidLoadが完全に実行されるまで変数のいくつかが 'nil'であるので、これは問題だと思います。それがあなたを助けるかどうか私に教えてください。 –

答えて

5

ビューがロードされるときに空の文字列をチェックすると、 stringはまだ設定されていない可能性があります。

if (checkfieldstring1 == nil || [checkfieldstring1 length] == 0) { 
    checkboxButton.hidden = YES; 
} else { 
    checkboxButton.hidden = NO; 
} 

それとも、私がやると私はプロジェクトに追加する一般的なマクロのセットでこれを持っているとして、あなたがしなければ:

static inline BOOL isEmpty(id thing)) { 
    return thing == nil 
     || ([thing respondsToSelector:@selector(length)] 
     && [(NSData *)thing length] == 0) 
     || ([thing respondsToSelector:@selector(count)] 
     && [(NSArray *)thing count] == 0); 
} 

ウィル・シプリーの礼儀http://www.wilshipley.com/blog/2005/10/pimp-my-code-interlude-free-code.html

あなたは可能性があり、単に次のようにチェックしてください:

if(isEmpty(checkfieldstring1) { 
    checkboxButton.hidden = YES; 
} else { 
    checkboxButton.hidden = NO; 
} 
+0

これはまだ動作していません...ボタンが空であっても非表示になりました。 – user1205856

+0

上記のコードは、テストする前に 'checkfieldstring1'を' nil'に設定しているので動作しません。 "="を "=="に変更します。 –

+0

私はすでにそれを試しましたが、まだ何もありません。 – user1205856

3

nilまたはが空("")の場合は、両方のケースを確認する必要があります。

あなたがnilオブジェクトにメッセージを送信するときのObjective-Cは、単に0を返すため、両方をチェックする最も簡単な方法ではなく、このように、長さメソッドを使用することです:

if ([checkfieldstring1 length] == 0) { 
    checkboxButton.hidden = YES; 
} 
else { 
    checkboxbutton.hidden = NO; 
} 

また、短縮することができますただ、比較の結果を割り当てることで、この:

checkboxButton.hidden = [checkfieldstring1 length] == 0; 

これはしかし、あなたが後でそれを読んでいるときほど明確ではないかもしれないので、私は最初の例の方が多いでしょう。

-1

私は、この5月にはこれを試すことができますだと思う -

if(checkfieldstring1 == [NSNull null] || [checkfieldstring1 length] == 0) { 
// do something 
} 
+0

NSStringインスタンスは[NSNull null]と決して等しくありません。単純なnilまたはNULL。 -1。 –

1

私は今後の参考のために、私のviewDidLoadで、私はUserDefaultsからテキストフィールドのテキストを設定していた...私は愚かだったと信じてすることはできません。私はテキストが設定される前に空の文字列をチェックしていたので、毎回空に見えました。さて、私は、テキストフィールドを設定した後にコードを配置し、それは魅力のように動作します。

関連する問題