2010-05-09 37 views
9

NSString'in boş olup olmadığını belirlemek en iyisi nedir? Şu anda aşağıdaki kullanıyorum: herhangi bir tavsiye içinNSString boş olup olmadığını belirleme

if (string == nil || [string isEqualToString:@""]) { // do something }

teşekkür ederiz. dize nil ise

cevap

24
if ([string length] == 0) { 
    // do something 
} 

ardından nil için mesaj sıfır döndürür ve tüm hala iyi olacak.

+0

+1. whitespaces hakkında ne dersiniz? Ya onları saymak istemiyorsan? Herhangi bir kullanışlı yol? – cocoafan

+1

@cocoafan Kesintisiz değil. Bunu sık sık yapmanız gerekiyorsa, "NSString" e, "isNotEmpty" gibi bir kategori eklemenizi öneririm, böylece özel çeklerinizi yapabilirsin. Daha sonra bunu yapabilirsin ([string isNotEmpty]) {… } 've aynı zamanda' nil's de düzgün bir şekilde işleyecektir… –

+0

Yine de niçin döndüğünün uzunluğunu bilmek isteyebilirsiniz. Bu nedenle, sıfırın alınmasından sonra bazen sıfır olup olmadığını kontrol etmek yararlı olabilir. – uchuugaka

0

Değil iyi çözme

[nil length]0

(0==0)

1 sonra ([string length] == 0)1 olacak olmasıdır. Her ne kadar yanlış olsa da.

iyi yoldur

if (![string length]) { 

} 
+2

uzunluğu bir NUMBER'dir ve == 0 ile kontrol edilmelidir. Eğer (! [String length]) bir c kesmek ve (semantik olarak) doğru değil! booleans için kullanılmalıdır. Lütfen hala çalıştığını söyleme. Bunu biliyorum. Bu sadece doğaçlamadır. – cocoafan

+2

Bu cevap yanlış. ! 0 da 1, sadece 0 == 0 ile aynıdır. Sonuç aynıdır, burada tartışılan tek şey, bir stil meselesidir – Sven

2

Bu dizede bir şey yoksa sadece çek olmaz ama sadece boşluk ise de yanlış dönecektir. Cevabınız için

NSString *tempString = [myString stringByReplacingOccurrencesOfString:@" " withString:@""]; 


if ([tempString length] != 0) { 
    //There is something in the string. 
} else { 
    //There is nothing or it is just whitespace. 
} 
+0

Bu sadece baştaki ve sondaki boşlukları kaldırır – uchuugaka

+0

Ne biliyor musunuz? Doğru Çok fazla deneme yapıyordum ve yanlış kodu kopyalayıp yapıştırmış olmalıyım. Düzeltildi. Bu çok daha verimli. –

+1

Başka ne olursa olsun, -stringByReplacingOccurrencesOfString: withString: 'özellikle etkili değil. Gerçekten aradığınızı test etmek için çok daha iyi: boşluk olmayan karakterler. 'myString || [myString rangeOfCharacterFromSet: [[NSCharacterSet whitespaceCharacterSet] invertedSet] .location == NSNotFound' (Bu durumda, "myString" in "nil" olup olmadığının sınanması gerekir. 'NSNotFound'' 'location' alanında. –

İlgili konular