2013-10-19 14 views
5

üzerinde tanınmayan seçici Eh benim kod şöyle olduNSNull isEqualToString:</p> <p>Ben bu gibi onları kullanıyorum <code>place and date.</code> iki dizeyi var: objc

cell.datePlace.text= [NSString stringWithFormat:@"%@, %@",date,place]; 

bazı girdileri, çıktı böyledir :

"21/10/2012, <null>" 
"21/11/2012, None" 
"21/12/2013, London" 

Uygulamam çökmez ama boş ve Hiçbiri olarak eşit olmadığı durumlarda ben görünür olmasını yer istiyorum. yer <null> benim app çöktü ve bu hata var ne zaman

NSString * place=[photo objectForKey:@"place"]; 


if ([place isEqualToString:@"None"]) { 
       cell.datePlace.text= [NSString stringWithFormat:@"%@",date]; 
      } else { 
       cell.datePlace.text= [NSString stringWithFormat:@"%@, %@",date,place]; 
      } 

Sorun oldu:

if (place) { 
      if ([place isEqualToString:@"None"]) { 
       cell.datePlace.text= [NSString stringWithFormat:@"%@",date]; 
      } else { 
       cell.datePlace.text= [NSString stringWithFormat:@"%@, %@",date,place]; 
      } 
     } else { 
      cell.datePlace.text= [NSString stringWithFormat:@"%@",date]; 
     } 
: Yani

[NSNull isEqualToString:] unrecognized selector send to instance 

, ben bu çalıştı

Yani bu çalıştı

Ancak sorun devam ediyor.

cevap

26

Kaynak verileriniz JSON veya benzerlerinden geliyor (verilerin ayrıştırıldığı ve eksik verilerin NSNull olarak ayarlandığı bir şey). Şu anda uğraşmanız gereken ve şu an için ihtiyacınız olmayan NSNull. Temelde

:

if (place == nil || [place isEqual:[NSNull null]]) { 
    // handle the place not being available 
} else { 
    // handle the place being available 
} 
+0

Evet, JSON'dan geliyor. Şimdi çalışıyor. Cevabı kabul edeceğim! – ghostrider

+4

'NSNull' un tekil bir nesne olduğunu unutmayın, böylece' place == [NSNull null] 'ile karşılaştırabilirsiniz. –

+0

Harika cevap. Bıktım – user3182143

2

için [NSNull boş]:

if ([place isKindOfClass:[NSNull class]]) 
{ 
    // What happen if place is null 

} 
3

kullanımlar

if (! [place isKindOfClass:[NSNull class]) { 
    ... 
} 

yerine

if (place) { 
    ... 
} 

Not: NSNull amacı, sıfır değildir, bu nedenle if (place) sonra doğru olacaktır.

+1

'yer = nil' onay gereksiz olduğunu. –

+0

@ H2CO3 evet, haklısınız, thx :) – Kjuly

İlgili konular