2011-11-27 21 views
6

Yani Aşağıdaki kodu vardır:iOS nesnesi boş olup olmadığını kontrol edemez

- (IBAction)doSomething 
{ 
if (txtName.text != (id)[NSNull null] || txtName.text.length != 0) { 
    NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@", txtName.text]; 
    [lblMessage setText:msg]; 
} 

} 

txtName bir UITextField, ben yanlış yapıyorum? Bazı metinleri yalnızca kullanıcı kutuda bir şey yazdığında göstermeye çalışıyorum.

Saygılarımızla,

txtName.text "metin boş veya uzunluğu 0 değilse"

cevap

0

Çözüm bulundu! ![txtName.text isEqualToString:@""]

- (IBAction)doSomething 
{ 
if (![txtName.text isEqualToString:@""]){ 
    NSString *msg = [[NSString alloc] initWithFormat:@"Hello, %@", txtName.text]; 
    [lblMessage setText:msg];  

} 

} 
6

if (txtName.text != (id)[NSNull null] || txtName.text.length != 0) {

olarak oku sadece bir null nil karşı karşılaştırabilirsiniz (nil asla - Bu arada, metin kutusu boş olsa bile her zaman bazı metinleri tutar. Yani ilk ayrılık her zaman doğrudur ve kutu her zaman görünecektir. Bir metin alanına

+2

Ve NSString bir örneğinin tekil örneğine eşit asla NSNull. –

+0

Bunun için bir yol var mı ... ya da? http://screencast.com/t/XJ9AZm7Cs – Uffo

11

Metin (sıfır aynı değildir olan) bir NSString örneği veya nil değeri, bu NSNull sınıfı örneği eşit hiç olmasıdır. 1. karşılaştırma her zaman doğru olduğu için, tüm if-condition doğru olarak değerlendirilir ve mesaj görüntülenir. Genellikle 2 karşılaştırmalar ile 1 seçeneği kullanmak rağmen

sadece

if (txtName.text.length != 0) 

sahip zaten 0 dönecektir nil uzunluk mesaj gönderme gibi senin eğer durum için

if (txtName.text != nil && txtName.text.length != 0) 

düzeltmek veya verebilir

+0

Hala çalışmıyor: buraya bakın http://screencast.com/t/XJ9AZm7Cs, herhangi bir çözüm? – Uffo

+0

Değişiklikleri derlediğinden emin misin? – Eiko

+0

Eh, evet derledim :(ama hala çalışmıyor ... – Uffo

3

Sizin gibi aynı sorunu yaşıyorum. Bu sorun NSNull sınıfı ile ilgilidir. Ve burada nesneyi kontrol etmek için kodum boş.

NSString* text; 
    if([text isKindOfClass:[NSNull class]]) 
    { 
      //do something here if that object is null 
    } 

Bu yardımcı olabilir umarım.

+0

"NSNull null" olmalıdır – runmad

1
#define SAFESTRING(str) ISVALIDSTRING(str) ? str : @"" 
#define ISVALIDSTRING(str) (str != nil && [str isKindOfClass:[NSNull class]] == NO) 
#define VALIDSTRING_PREDICATE [NSPredicate predicateWithBlock:^(id evaluatedObject, NSDictionary *bindings) {return (BOOL)ISVALIDSTRING(evaluatedObject);}] 
SAFESTRING(PASS_OBJECT OR STRING); 
0

bu deneyin:

myObj değeridir nil veya < boş>

if([myObj isEqual:[NSNull class]] || !myObj) { 

// your code 

} 
İlgili konular